4

各ファセットに独自の凡例があるファセットをプロットしようとしています。ただし、すべてを適切に配置するのに問題があります。

dat <- structure(list(group1 = structure(c(1L, 1L, 2L, 2L, 2L), .Label = c("A", 
"B"), class = "factor"), group2 = structure(c(1L, 2L, 1L, 3L, 
2L), .Label = c("a", "b", "c"), class = "factor"), x = c("1", 
"2", "3", "4", "2"), y = c("1", "2", "3", "4", "3")), .Names = c("group1", 
"group2", "x", "y"), row.names = c(NA, 5L), class = "data.frame")

dat <- split(dat, f = dat$group1)

library(ggplot2)
p1 <- ggplot(dat$A) +
  geom_point(aes(x=x, y=y, colour=group2)) +
  facet_wrap(~group1) +
  guides(colour=guide_legend(nrow=2)) +
  scale_colour_manual(values=c(a = "green", b = "red", c = "blue"), 
                      labels=c(a = "green", b = "red", c = "blue"))

p2 <- p1 %+% dat$B

問題を使用gridExtraすると、プロットが整列しません。

library(gridExtra)
grid.arrange(p1, p2, p2, p1, ncol=2)

ここに画像の説明を入力

そしてcowplot、凡例の使用はやや中心的です:

library(cowplot)
plot_grid(p1, p2, p2, p1, ncol=2, align="hv")

legend.justificationand/orを追加しようとしlegend.positionましたが、効果はありませんでした。

ここに画像の説明を入力

プロット/凡例の両方を揃えるにはどうすればよいですか?

4

1 に答える 1

8

実験的なeggパッケージを試すことができます。

grid.draw(ggarrange(plots=list(p1,p2,p2,p1)))

ggplot2 には、更新のたびにこのタイプのコードを壊す癖があるため、脆弱な回避策と考えてください。

ここに画像の説明を入力

于 2016-04-05T07:13:08.007 に答える