関数 ggplotGrob() を lapply を使用して ggplots のリストに適用しようとしていますが、そこから grob オブジェクトのリストを取得できないようです。このプロジェクトでは、可変数のプロットがユーザー入力に基づいて生成されます。グリッドを動的に生成する方法が必要です。プロットからグロブを定義して、表示前にすべてのチャートに同じ幅を割り当てる必要があります。
たとえば、プロット p1 と p2 があります。手動で行う場合:
gp1 <- ggplotGrob(p1)
gp2 <- ggplotGrob(p2)
grid.arrange(gp1, gp2, ncol=1)
私は2つのプロットを取得します。
今私がするなら
gp_list <- list(gp1,gp2)
grid.arrange(gp_list, ncol=1)
エラー メッセージが表示される
ArrangeGrob(..., as.table = as.table, clip = clip, main = main, のエラー: 入力はグロブでなければなりません!
unlist() を使用しようとしましたが、同じエラーが発生しました
grid.arrange(unlist(gp_list), ncol=1)
最終的には、lapply などを使用してグロブのリストを作成したいと思います。
gp_list <- lapply(plot_list, function(x) ggplotGrob(x))
grid.arrange を使用してすべてのグロブを配置できます。リストから各オブジェクトをグロブとして取得する簡単な手順を忘れているように感じます。誰かがこれを解決しましたか?
ありがとう
> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] pryr_0.1 WGCNA_1.41-1 flashClust_1.01-2 dynamicTreeCut_1.62 gridExtra_0.9.1 ggplot2_1.0.0
[7] gplots_2.14.1 hash_2.2.6 shiny_0.10.1 Biobase_2.24.0 BiocGenerics_0.10.0