2017-08-31 1 views
0

plotten Ich erstelle Plots mit Ggplot in R und ich verwendet eine Schleife, um meine Plot Zeit zu beschleunigen. Ich habe jedoch Probleme beim Zeichnen mehrerer Linien in der gleichen Grafik. Daten:R: Wie mehrere Linien in einem Plot mit einer Schleife in ggplot

 df <- c("Results", "Capacity", "Power", "LDI","LDE", "LB", "PDC","D") 

Einige Daten

Results Capacity Power LDI  LDE PDC D  CperkWh 
1 ImpactDC  1.00 PG20 LDI0.01 LDE0 PDC0 D10 0.010950532 
2 ImpactDC  0.95 PG10 LDI0.02 LDE0 PDC0 D10 0.080374607 
3 ImpactDC  0.90 PG50 LDI0.003 LDE0 PDC0 D10 0.010158171 
4 ImpactDC  0.85 PG5 LDI0.05 LDE0 PDC0 D10 0.006994843 
5 ImpactDC  0.80 PG3 LDI0.02 LDE0 PDC0 D10 0.009684512 
6 ImpactDC  0.75 PG20 LDI0  LDE0 PDC0 D10 0.007891302 

Die Schleife Ich verwende basiert auf here und sieht wie folgt aus:

Power.graph <- function(df, na.rm = TRUE, ...){ 
    Powerlist <- unique(df$Power) 
    for (i in seq_along(Powerlist)){ 
    plot <- 
     ggplot(subset(df, df$Power==Powerlist[i]), 
      aes(Capacity, y = CperkWh), group = df$Power, colour = PDC) + 
     geom_line() + 
     geom_point()+ 
     theme(axis.text.x = element_text(size=12))+ 
     facet_wrap(~ PDC, ncol =1)+ 
     theme(legend.position = "none")+ 
     scale_y_continuous("Income in €/kWh")+ 
     scale_x_continuous("Capacity of the line")+ 
     ggtitle(paste(Powerlist[i], ' Capacity of the line \n', 
        "Income per kWh \n", 
        sep='')) 
    #save plot as PNG 
    ggsave(plot = last_plot(), file= paste(StoreResults, '/Results/', 
              Powerlist[i], "YesDCNoV2G.png", sep=''), scale=2) 
    print(plot) 
    } 
} 
#Run the function 
Power.graph(df) 

Was ich möchte, ist zu tun, um plotten mehrere Zeilen (so das Diagramm CperkWh) für jeden Wert von LDI separat. Wenn ich das Programm ausführe, ist das Diagramm, das ich erhalte, was ich will, aber der Befehl geom_line verbindet alle Punkte und ich möchte, dass es nur den Punkt mit dem gleichen Wert von LDI verbindet. Das passiert jetzt: enter image description here

Kann mir jemand helfen?

+1

Können Sie einige Beispieldaten angeben, anstatt nur Ihre Spaltennamen? – cmaher

+1

Scheint so, als müssten Sie 'group' innerhalb von' aes' verschieben. Versuchen Sie, ein [reproduzierbares Beispiel] hinzuzufügen (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), damit die Leute Ihnen besser helfen können. – aosmith

+0

Vielen Dank für die Tipps: Ich habe einige Daten hinzugefügt. – ima

Antwort

0

Schwierig zu sagen, was Sie ohne Ihre Daten tun wollen, aber warum brauchen Sie diese Schleife überhaupt? So etwas sollte funktionieren:

ggplot(df, aes(Capacity, y = CperkWh, group=factor(Powerlist), color = PDC)) + 
    geom_line() + 
    geom_point() 
+0

Ich habe versucht, eine Schleife zu verwenden, da ich mehr Variablen habe (es gibt mehrere Werte von P), als ich in dem Beispiel tatsächlich zeige, und ich möchte den gesamten Prozess automatisieren. Deshalb habe ich beschlossen, eine Schleife zu erstellen. Ich bin neu bei R, also bin ich mir nicht sicher, ob das der beste Weg ist, aber dafür wäre es fast das, was ich gerne hätte. – ima