2017-08-31 21 views
0

gのプロットをRで作成していて、プロット時間を短縮するためにループを使用しました。しかし、私は同じグラフに複数の行をプロットする問題があります。 データ:R:ggplotのループを使って1つのプロットに複数の線をプロットする方法

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

一部のデータ

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 

私が使用しているループがhereに基づいており、次のようになりますされています。私がやりたい何

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) 

プロットすることですLDIのすべての値に対して複数の行(グラフCperkWh)が別々に表示されます。私がプログラムを実行するとき、私が受け取ったプロットは私が望むものですが、geom_lineコマンドはすべてのポイントを接続します。そして、ポイントをLDIと同じ値で接続するだけです。これは今起こっていることです:enter image description here

誰か助けてくれますか?

+1

あなたの列名ではなく、いくつかのサンプルデータを提供できますか? – cmaher

+1

'aes'の中で' group'を動かす必要があるようです。 [再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を追加してみてください。皆さんが助けてくれるでしょう。 – aosmith

+0

ヒントありがとう:私はいくつかのデータを追加しました。 – ima

答えて

0

あなたのデータなしで何をしようとしていますが、なぜこのループが必要なのですか?このようなものはうまくいくはずです:

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

例で実際に表示している変数より多くの変数(Pの値がいくつかあります)があるのでループを使用しようとしましたが、全体のプロセスを自動化したいと思います。だから私はループを作ろうと決めたのです。私はRに新しいので、これが最善の方法であるかどうかはわかりませんが、これはほとんど私がやりたいことです。 – ima

関連する問題