1

複数の凡例を表として表示しようとしています。例えば、

library(ggplot2)

dat <- data.frame(
  x = rep(1:4, 4), 
  y = c(1:4, 2:5, 3:6, 4:7), 
  a = rep(rep(c("a1", "a2"), each=4), 2), 
  b = rep(c("b1", "b2"), each=8))

ggplot(dat, aes(x=x, y=y, colour=b, shape=a)) + 
  geom_point()+ facet_wrap(~ b)

色と形が異なる複数の凡例を取得できます。しかし、私は私の伝説を見せたい

     b1 | b2
--------------
a1 | o  |  o
a2 | ^  |  ^

どうしたらこのような伝説を描くことができますか?

4

1 に答える 1

1

以下に一例を示します。

p <- ggplotGrob(ggplot(dat, aes(x=x, y=y, colour=b, shape=a)) + 
  geom_point()+ facet_wrap(~ b) + theme(legend.position = "none"))

leg <- ggplotGrob(ggplot(unique(subset(dat, select = a:b)), aes(a, b, colour=b, shape=a)) + geom_point() +
   coord_equal() +
   theme_minimal() + 
   theme(legend.position = "none", axis.ticks = element_blank(), axis.title = element_blank()))

library(gtable)
grid.newpage()
pushViewport(vp = viewport(width = 0.8, x = 0.4))
grid.draw(p)
popViewport()
pushViewport(vp = viewport(width = 0.2, x = 1-0.1))
grid.draw(leg)
popViewport()

ここに画像の説明を入力

をカスタマイズすることで、外観を微調整することもできますtheme

于 2013-07-02T13:29:37.697 に答える