2016-07-21 12 views
0

Das sind die Daten aus meiner CSV-Datei:Plot Linien Gruppe Punkte

Tx, Varx, Scale, Val1, Val2 
A, VAR1, 5, 516, 2 
A, VAR1, 10, 447.4, 5 
A, VAR1, 15, 294, 8 
A, VAR1, 20, 217.2, 12 

A, VAR2, 5, 675.4, 4 
A, VAR2, 10, 423.2, 9 
A, VAR2, 15, 276, 12 
A, VAR2, 20, 200, 15 

B, VAR1, 5, 624, 6 
B, VAR1, 10, 465.2, 13 
B, VAR1, 15, 315.2, 16 
B, VAR1, 20, 234.8, 18 

B, VAR2, 5, 518.8, 8 
B, VAR2, 10, 443, 17 
B, VAR2, 15, 278.4, 20 
B, VAR2, 20, 217.8, 24 

Ich möchte Linien zeichnen (nicht nur Punkte) zwischen VARx und Tx-Werte distingish. Ich versuche, mit diesem Code zu zeichnen:

data_table = read.csv("PATH/file.csv",check.names=FALSE,header=T,sep=",") 
data_table$NScale <- as.numeric(as.character((data_table$Scale))) 
ggplot(data_table, aes(x=NScale, y=Val2, colour=Tx, shape=Varx, linetype=Varx, group=Tx)) + geom_point() 

enter image description here

Wenn ich versuche, Linien zu zeichnen zum Verbinden blau triangules, rot triangules, rote Kreise, blaue Kreise, mit geom_line(), geom_path() eine Fehlermeldung wird angezeigt:

Error: geom_path: If you are using dotted or dashed lines, colour, size and linetype must be constant over the line 

Wie kann ich die Linien Gruppierung nach Form und Farbe erstellen? Ich habe mehrere Möglichkeiten ausprobiert, aber immer noch nicht verstanden. Was ist das Problem?

Antwort

1

Sie sollten versuchen, eine neue "Gruppierungs" -Variable zu erstellen und zu trennen, wie Sie das Diagramm für die "Punkte" und die "Linie" machen.

Ich habe dies hier getan dplyr verwenden, aber man könnte es Basis R tun mit auch:

library(dplyr) 

data_table <- data_table %>% 
    rowwise() %>% 
    mutate(TxVarxgroup = paste0(Tx, Varx, collapse="")) 

ggplot(data_table) + 
    geom_point(aes(x=NScale, y=Val2, colour=Tx, shape=Varx)) + 
    geom_line(aes(x=NScale, y=Val2, group=TxVarxgroup)) 

enter image description here

+0

Vielen Dank. Ihre Antwort war sehr hilfreich. Eigentlich verwende ich 'geom_line (aes (x = NScale, y = Val2, Farbe = Tx, shape = Varx, Linetype = Varx)' ' –

+0

Nur ein FYI,' geom_line' versteht die 'shape' Ästhetik nicht es tut eigentlich nichts: P – chappers

+0

Richtig! 'geom_line (aes (x = NScale, y = Val2, Farbe = Tx, Linientyp = Varx))' Danke! –

Verwandte Themen