如何正确使用guide_legend来控制图例的行数

时间:2016-02-17 19:23:32

标签: r ggplot2 legend

我正在使用ggplot2在R中绘制一个数字。图中的图例有两行,但我想打开它们并将它放在一行中。我四处搜索,发现guide_legned()可能是要走的路。我尝试了几种不同的方式,唯一的方法就是不会出现错误:

fig <- ggplot(data, aes(y=y, x=x, shape=z))+
  geom_point(size = 4)+
  scale_shape_manual(values = c(0,1,2,3,4,6))+
  geom_abline('somestuff in here')+
  scale_fill_continuous(guide=guide_legend(nrow=1))+
  annotate('somestuff in here')+
  theme_bw()+
  theme(legend.title = element_blank(),
        panel.grid = element_blank(),
        legend.position='top',
        legend.key = element_blank())

然而,传说仍然是2行。我想知道为什么guide_legend(nrow=1)不起作用(即使没有错误)。什么是正确的方法呢?谢谢!

1 个答案:

答案 0 :(得分:5)

您的情节中有shape美学但没有fill美学,因此scale_fill_continuous不适用于此处。它是您要格式化的shape图例。两个选项:

fig <- ggplot(data, aes(y=y, x=x, shape=z))+
  geom_point(size = 4)+
  scale_shape_manual(values = c(0,1,2,3,4,6), guide=guide_legend(nrow=1)+
  geom_abline('somestuff in here')+
  annotate('somestuff in here')+
  theme_bw()+
  theme(legend.title = element_blank(),
        panel.grid = element_blank(),
        legend.position='top',
        legend.key = element_blank())

fig <- ggplot(data, aes(y=y, x=x, shape=z))+
  geom_point(size = 4)+
  scale_shape_manual(values = c(0,1,2,3,4,6))+
  geom_abline('somestuff in here')+
  annotate('somestuff in here')+
  theme_bw()+
  theme(legend.title = element_blank(),
        panel.grid = element_blank(),
        legend.position='top',
        legend.key = element_blank()) +
  guides(shape=guide_legend(nrow=1))