将两个图例放在两行中

时间:2018-11-14 15:07:23

标签: r ggplot2 legend

以下

data(iris)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
  geom_point(aes(shape = Species, colour = Petal.Width)) + 
  theme(legend.position = 'bottom')

在底部并排放置两个图例Petal.WidthSpecies

我也可以像这样将它们彼此叠放吗?

Example

我知道cowplot可以实现,但是还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

例如可以通过在legend.box内调整theme()来完成

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point(aes(shape = Species, colour = Petal.Width)) + 
    theme(
        legend.justification = 'left', 
        legend.position = 'bottom', legend.box = 'vertical', 
        legend.box.just = 'left')

enter image description here

修改

有许多参数可以传递给theme(),以调整图例之间以及图与图例之间的间距和边距,例如(从?theme复制)

  • legend.margin控制每个图例的边距
  • legend.box.margin控制包含所有图例的区域的边距
  • legend.spacinglegend.spacing.xlegend.spacing.y控制图例之间的间距

在您的情况下,如果您的目标是将图例沿垂直方向拉近,则可以尝试例如legend.margin = margin(-5, 0, 0, 0)