0

この投稿の行に沿って何かをしたいと思います: R: ggplot2 プロットをリストに保存する 問題は、それを機能させることができないことです。個々のグラフを取得できるようですがfacet_wrap、エラーが発生します。すべてのグラフを出力し、それらを jpg などの形式でディスクに保存するだけで満足するので、後でそれらをスクロールできます。

for(n in 1:5){
  pdata <- data.frame(mt1[n])
  library(ggplot2)
  p <-ggplot(pdata, aes(x=variable, y=value, color=Legend, group=Legend))+ geom_line()+ facet_wrap(~ color)

}

データのへのリンクdput: mt1

編集:正しいファイル全体を追加しました。少し長いです

4

1 に答える 1

3

データ フレームに変数がないためにエラーを省略した場合はfacet、次の方法でプロットを生成し、別のファイルに保存できますggsave

for(n in 1:5){
  pdata <- data.frame(mt1[n]) # better to use mt1[[n]]
  p <-ggplot(pdata, aes(x=variable, y=value, color=Legend, group=Legend))+ geom_line()
  ggsave(paste0("plot",n,".jpg"), p)
}

改善のためのいくつかの提案:

まず、@Dason が指摘しているように、library(ggplot2)呼び出しはループの外にある必要があります。

次に、 list by の要素にアクセスすると[.]、結果は依然としてリストになります。代わりに行う必要があります:[[.]]これにより、data.frame(.)呼び出しが不要になります (上記のコードでコメントされているように)。

3 つ目は、一連の関数を使用すること*applyです。ここでは、 を使用しlapplyます。

これらすべてのポイントをコードで要約するには、次のようにします。

require(ggplot2) # load package outside once
o <- lapply(seq_along(mtl), function(idx) {
    p <- ggplot(mtl[[idx]], aes(x = variable, y = value, 
              color = Legend, group = Legend))+ geom_line()
    ggsave(paste0("plot",idx,".jpg"), p)
})
于 2013-03-09T23:52:45.367 に答える