2017-08-10 1 views
0

ich ein Grundstück mit diesen Datenrahmen machen wollen:R + ggplot: Plotten viele Variablen

val = c(27.9, 35.5, 28.2, 20.7, 9.3, 7.3, 9.2, 8.8, 14.2, 13.7, 12.4, 41.3, 31.8, 
       44.0, 28.0, 17.5, 6.1, 6.9, 5.7, 9.8, 8.8, 21.9, 13.7, 26.2, 22.8,  
       21.6, 15.2, 15.2, 3.4, 2.9, 4.2, 3.3, 8.1, 9.2, 8.5, 25.8, 34.1, 
       36.6, 28.1, 10.4, 3.9, 15.8, 24.9, 19.5, 21.8, 22.2, 19.1, 22.0) 
df = data.frame(variable=rep(c('E1', 'E2'), 
       each=12,2), 
       value=val, 
       mes= rep(month.abb,4), 
       var=rep(c('orig', 'trat'), each=24)) 
str(df) 
    'data.frame': 48 obs. of 4 variables: 
    $ variable: Factor w/ 2 levels "E1","E2": 1 1 1 1 1 1 1 1 1 1 ... 
    $ value : num 27.9 35.5 28.2 20.7 9.3 7.3 9.2 8.8 14.2 13.7 ... 
    $ mes  : Factor w/ 12 levels "Apr","Aug","Dec",..: 5 4 8 1 9 7 6 2 12 11 ... 
    $ var  : Factor w/ 2 levels "orig","trat": 1 1 1 1 1 1 1 1 1 

erkunden, habe ich diese Handlung:

ggplot(df, 
     aes(mes, value, group=variable, color=variable, shape=var)) + 
     scale_x_discrete(limits = month.abb) + 
     geom_point() + geom_line() + 
     theme(legend.position = 'bottom') 

Die ggplot Ausgang ist nicht das, was ich erwartet hatte aber wenn die ggplotly Funktion übergeben wird, was ich beabsichtigt habe.

Außerdem, wenn ich die Option übergeben: ...aes(mes, value, group=variable, color=variable, shape=var, linetype=var)..., um beide var Werte mit verschiedenen Linientypen zu trennen bekomme ich den Fehler: Fehler: geom_path: Wenn Sie gepunktete oder gestrichelte Linien verwenden, müssen Farbe, Größe und Linientyp sein konstant über die Linie.

Also, was passiert mit der Grafik ggplot? und wie sollte ich das Attribut linetype in der ggplot-Funktion verwenden?

Bearbeiten. fausto.siegmund ‚s Antwort mir erlaubt, die var Variablen mit verschiedenen Arten von Leitungen zu trennen:

ggplot(df, 
     aes(mes, value, group=interaction(variable,var), color=variable, linetype=var)) + 
    scale_x_discrete(limits = month.abb) + 
    geom_point() + geom_line() + 
    theme(legend.position = 'bottom') 

Jetzt ist es besser aussieht. Es ist möglich, beide Faktoren auf einen Blick zu schätzen.

Vielen Dank fausto.siegmund!

+0

Versuchen 'group = Interaktion (Variable, var)' im 'ggplot (...)' Sie auf dem Laufenden. Bewirkt dies das von Ihnen beabsichtigte Ergebnis? –

+0

Es hat funktioniert. Setzen Sie es als die Antwort für mich, um es so zu markieren. – noriega

Antwort

1

Um die Kombination der Faktorstufen in var und variable anzuzeigen, die Sie plotten müssen, führen Sie levels(interaction(df$variable,df$var)). Dies zeigt, dass die Faktoren, auf Grundstück sind:

"E1.orig" "E2.orig" "E1.trat" "E2.trat" 

einzigartige Linien für diese möglichen Kombinationen zu zeichnen, modifizieren group=variable-group=interaction(variable,var).

Vollständiger Code und resultierendes Diagramm.

val = c(27.9, 35.5, 28.2, 20.7, 9.3, 7.3, 9.2, 8.8, 14.2, 13.7, 12.4, 41.3, 31.8, 
       44.0, 28.0, 17.5, 6.1, 6.9, 5.7, 9.8, 8.8, 21.9, 13.7, 26.2, 22.8,  
       21.6, 15.2, 15.2, 3.4, 2.9, 4.2, 3.3, 8.1, 9.2, 8.5, 25.8, 34.1, 
       36.6, 28.1, 10.4, 3.9, 15.8, 24.9, 19.5, 21.8, 22.2, 19.1, 22.0) 
df = data.frame(variable=rep(c('E1', 'E2'), 
       each=12,2), 
       value=val, 
       mes= rep(month.abb,4), 
       var=rep(c('orig', 'trat'), each=24)) 

ggplot(df, 
     aes(mes, value, group=interaction(variable,var), color=variable, shape=var)) + 
    scale_x_discrete(limits = month.abb) + 
    geom_point() + geom_line() + 
    theme(legend.position = 'bottom') 

enter image description here