ggplot2图例项在单个水平行中

54

看起来上周我编写和测试的代码现在突然决定改变输出,尽管代码或R或Rstudio版本没有更改。

以前,当我用ggplot2绘制图形并要求图例出现在图形底部时,它会自动将项定向为单个水平行。现在,当我运行相同的代码时,它会将项目放置在若干个两行列中。

这里是一个例子:

mtcars$cyl <- (1:32)
subcars <- subset(mtcars, cyl<10)
subcars$cyl <- as.factor(subcars$cyl)

ggplot(subcars, aes(carb, mpg, group=cyl, colour=cyl)) + 
  geom_line() +
  theme_classic() +
  theme(plot.title = element_text(size = rel(2), face="bold", vjust=-4)) +
  theme(legend.position = "bottom") +
  theme(legend.direction = "horizontal") +
  labs(title="Title") 

您可以看到,我已经尝试添加了这一行代码:theme(legend.direction="horizontal"), 但是图例仍然显示为每行有5个2列的项目(是的,它甚至不只是两行)。

现在我只能假设可能发生了一些我不知道的更新或其他事情,因此我愿意接受我需要想出一种新策略来解决这个问题(上周这还不是个问题)。虽然我有点困惑为什么我的代码突然决定停止工作(欢迎任何相关建议),但我更感兴趣的是找到一个解决方案来解决立即问题即图例项目以奇怪的方式显示的问题。


如果下面的答案对您有帮助,请不要在评论中添加“谢谢”,而是接受它。这可以通过点击投票箭头下方的复选标记来完成,这样做可以让您和回答者都获得一些声誉。这向整个社区表明,您不再需要关于此问题的帮助。这不是义务性的,只是 Stack Overflow 的做事方式。 - Adriaan
1个回答

125

将此添加到你的图表中:

+ guides(colour = guide_legend(nrow = 1))

6
当然,如果图例遵循的是fill而不是colour美学,那么它就是+guides(fill = guide_legend(nrow = 1)) - Andrea M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接