2017-08-10 13 views
1

ラベルがプロット間で異なる場合、プロット領域の幅をggplotで一貫して自動的に正確にする方法はありますか?たとえば、次の2つのプロット(データとコードが続きます)があります。ここでは2番目のラベルは長いラベルなので、プロット領域の幅は空きスペースを作るために小さくなります。ggplotの一貫したプロット幅(ラベルを数えない)

2番目のプロットで手作業で図形の幅を広げることはできますが、1)プログラムで行うことはできません.2)忍耐と時間がなければ正確ではありません。

ここで私が「プロット領域」と呼んでいるものを検索する方法がわからないので、用語でさえ助けてください。ここで

first plot is wider second plot is narrower

は、データとグラフを生成するコードです:@BenBolkerへ

set.seed(5) 
d1 <- expand.grid(x=LETTERS[1:3], g=letters[1:3], rep=1:10) 
d1$y <- round(rnorm(nrow(d1), 10, 2), 1) 
d2 <- expand.grid(x=LETTERS[1:3], g=letters[1:3], rep=1:10) 
d2$y <- round(rnorm(nrow(d1), 10, 2), 1) 
levels(d2$x) <- sapply(levels(d2$x), strrep, 10) 
levels(d2$g) <- sapply(levels(d2$g), strrep, 10) 

library(ggplot2) 
p1 <- ggplot(d1) + aes(x, y, color=g) + geom_boxplot() + coord_flip() 
p2 <- ggplot(d2) + aes(x, y, color=g) + geom_boxplot() + coord_flip() 
ggsave("test1.pdf", p1) 
ggsave("test2.pdf", p2) 
+1

'cowplot'に便利な整列ツールがあるかもしれません... –

+0

私はそれを今、感謝しています! – Aaron

+0

質問が既に解決されている[this](https://stackoverflow.com/questions/16255579/how-can-i-make-consistent-width-plots-in-ggplot-with-legends)をご覧ください –

答えて

1

おかげで、私は約cowplotを学んでいます。それは、(出力が示されていない)は、この目的のために

both2 <- align_plots(p1, p2, align="hv", axis="tblr") 
p1x <- ggdraw(both2[[1]]) 
p2x <- ggdraw(both2[[2]]) 
save_plot("cow1.png", p1x) 
save_plot("cow2.png", p2x) 

とも同じファイルにプロットを保存しplot_gridalign_plots機能を持っています。私はまだcowplot機能を通じてつもりだと私は有益な何かを見つけた場合、この答えに追加しますが、任意の読者が何かを知っている場合は、cowplot中かどうかのどちらか、ドン」になる

library(cowplot) 
both <- plot_grid(p1, p2, ncol=1, labels = c("A", "B"), align = "v") 
save_plot("cow.png", both) 

enter image description here

あなたが別の答えを加えないようにしましょう!

+0

この回答のコピーされた情報はhttps://stackoverflow.com/a/45616684/210673 – Aaron

関連する問題