1

df

  primer timepoints         mean          sde
   Acan          0 1.000000e+00 0.000000e+00
   Acan         20 9.547922e-01 1.729115e-01
   Acan         40 1.936454e+00 9.934593e-01
   Acan         60 1.261360e+00 2.232165e-01
   Acan        120 2.219807e+00 5.915425e-01
   Acan        240 2.540490e+00 5.651534e-01
   Acan        360 1.518923e+00 1.522455e-01
   Actb          0 1.000000e+00 0.000000e+00
   Actb         20 1.061931e+00 4.362860e-02
   Actb         40 8.835103e-01 1.196449e-01
   Actb         60 8.889279e-01 1.401378e-01
   Actb        120 1.001135e+00 7.770563e-02
   Actb        240 8.551348e-01 1.884853e-01
   Actb        360 7.343955e-01 1.824412e-01

これは、各プライマーが 1 df にあるようにデータを処理しますが、一意のプライマーごとに ggplot2 を使用して散布図を作成したいと思います (y 軸は列の平均、x 軸はタイムポイントになります)。 ?

どういうわけか理想的な関数をラップすることができれば、プロットのリストです。

これをループしようとして、ggplotに使用したコードは次のとおりです

 plot_gg  <-  function(x){

    ggplot(df,aes(x=timepoints,mean)) + 
            geom_point() + 
            geom_line() +
            scale_x_continuous(name='x axis') +
            scale_y_continuous(name='y axis') +
            geom_errorbar(aes(ymin=mean-sde,ymax=mean+sde),width=2) +
            opts(title = primer)    
    }

   desired_list <- lapply(unique(df$primer),plot_gg,df)

これはかなり間違っていますが、個々のプライマーに従って最初に df をサブセット化する必要があるかどうかはわかりません。または、データが含まれている構造でggplotを使用する方が簡単な場合

もしあなたが私を導くのを少し手伝ってくれたら、それは素晴らしいことです

4

1 に答える 1

1

不足している部分は、引数の定義をやり直し、geom_errorbarの使用を追加する必要があると思いますfacet_wrap。のレイアウトで列と行の数を指定すると、facet_warp複数のページを取得できます。複数のページを印刷する別の方法は、grid::grid.newpage()関数を使用することです。

 ggplot(df, aes(x = timepoints, y = mean, ymin = mean - sde, 
    ymax = mean + sde)) + 
 geom_errorbar() + geom_point() + geom_line() + 
 facet_wrap(~ primer) + 
 xlab('x axis') + ylab('y axis') + opts(title = "primer")

以下のコメントに追加され、@ Thierry の編集を使用するマルチページ リクエストの場合:

pdf("twopage.pdf", onefile=TRUE)
   for ( i in unique(df$primer) ) { 
       g <- ggplot(df[df$primer == i, ], aes(x = timepoints, y = mean, ymin = mean - sde, 
       ymax = mean + sde)) + 
       geom_errorbar() + geom_point() + geom_line() + 
       facet_wrap(~ primer, ncol=1, nrow=1) + 
       xlab('x axis') + ylab('y axis') + opts(title = "primer") 
       print(g) ; cat(paste("printing", i, "\n"))}
   dev.off()
于 2012-08-21T06:13:39.180 に答える