如何使 ggplot 图例水平添加对象(而非垂直)

4
ggplot中,图例可以通过向theme函数添加以下参数作为水平图例移动到图形的底部
  • legend.position="bottom"将图例移至图表下方
  • legend.direction="horizontal"使图例变为水平。
但事实上并非如此... legend.direction="horizontal"只是似乎减少了图例中的行数以及每行中的图例对象数量
使用guides(color=guide_legend(nrow=x)可手动完成此操作。
dat <- data.frame(plot = rep(letters,2), val = rep(1:length(letters),2))
library(ggplot2)
ggplot(dat, aes(x = val, y = val, color = plot)) + 
  geom_point() +
  theme(legend.position="bottom") +
  guides(color=guide_legend(nrow=2))

这里输入图片描述

尽管如此....

如果您注意上述代码的图形输出,即使我可以控制图例的“维度”(即行数),我仍然无法弄清如何将图例的排序方式从垂直变为水平

  • 因此,我希望b被添加到a旁边 ("横向"排序),而不是像上面一样ab上方 ("垂直"排序)。

如何使我的图例对象横向而非纵向添加?

就像这样:

这里输入图片描述

1个回答

7
尝试在guide_legend中添加byrow = TRUE:
ggplot(dat, aes(x = val, y = val, color = plot)) + 
  geom_point() +
  theme(legend.position="bottom") +
  guides(color=guide_legend(nrow=2, byrow = TRUE))

enter image description here


我发誓你可能会花一整天的时间去寻找你需要的一个简单答案,却一直找不到!谢谢@joran。+1 - theforestecologist

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