ggplot2 による並列プロット 質問する

ggplot2 による並列プロット 質問する

2つのプロットを並べて配置したいのですが、ggplot2 パッケージつまり、 と同等のことを行いますpar(mfrow=c(1,2))

たとえば、次の 2 つのプロットを同じスケールで並べて表示したいとします。

x <- rnorm(100)
eps <- rnorm(100,0,.2)
qplot(x,3*x+eps)
qplot(x,2*x+eps)

これらを同じ data.frame に配置する必要がありますか?

qplot(displ, hwy, data=mpg, facets = . ~ year) + geom_smooth()

ベストアンサー1

横並びの ggplot(またはグリッド上の n 個のプロット)

grid.arrange()の機能はgridExtraパッケージは複数のプロットを結合します。これは 2 つを並べて配置する方法です。

require(gridExtra)
plot1 <- qplot(1)
plot2 <- qplot(1)
grid.arrange(plot1, plot2, ncol=2)

これは、2 つのプロットが同じデータに基づいていない場合、たとえば reshape() を使用せずに異なる変数をプロットする場合に便利です。

これは出力を副作用としてプロットします。副作用をファイルに印刷するには、デバイスドライバ(pdf、、pngなど)を指定します。例:

pdf("foo.pdf")
grid.arrange(plot1, plot2)
dev.off()

または、arrangeGrob()と組み合わせて使用​​しますggsave()

ggsave("foo.pdf", arrangeGrob(plot1, plot2))

これは、 を使用して 2 つの異なるプロットを作成するのと同じですpar(mfrow = c(1,2))。これにより、データの配置にかかる時間が節約されるだけでなく、2 つの異なるプロットが必要な場合に必要になります。


付録: ファセットの使用

ファセットは、異なるグループに対して同様のプロットを作成するのに役立ちます。これは以下の多くの回答で指摘されていますが、上記のプロットに相当する例を使用してこのアプローチを強調したいと思います。

mydata <- data.frame(myGroup = c('a', 'b'), myX = c(1,1))

qplot(data = mydata, 
    x = myX, 
    facets = ~myGroup)

ggplot(data = mydata) + 
    geom_bar(aes(myX)) + 
    facet_wrap(~myGroup)

アップデート

関数plot_gridcowplotの代替としてチェックしてみる価値がありますgrid.arrange答え以下@claus-wilkeによるこのビネット同等のアプローチですが、この関数は、プロットの位置とサイズをより細かく制御できます。このビネット

おすすめ記事