R中ggplot2中多个图例的图例键之间的间距

时间:2019-07-08 11:17:42

标签: r ggplot2 legend legend-properties

我通过互联网进行搜索,但找不到解决我问题的方法。

为了更加明确地说,我们有一个带有两个图例的图形,如下所示:

library(ggplot2)

ggplot() + 
  geom_point(data = mtcars, aes(x = disp, y = mpg, color = gear), 
             pch =20, size=18) + 
  geom_line(data = mtcars, aes(x = disp, y = mpg, size = disp/mpg*100)) +
  scale_size(range = c(0,3.5)) +
  guides(size = guide_legend("", order = 1, keywidth = 2, keyheight = 1.5), 
         color = guide_legend("", order = 2, keywidth = 1, keyheight = 1 )) +
  labs(x = "disp", y = "mpg") +
  geom_text(size=2.7, color = "grey29",  vjust=-0.8) +
  theme_bw() 

# ggsave("trial.png", width = 11.5, height = 8.5)

enter image description here

我可以通过使用更改与尺寸相关的第一个图例组的间距 size中的guides选项。但是,对于表示颜色的第二组,既不能使整个组更接近图形,也不能缩小彩色圆圈之间的大小。

我还尝试了主题中的图例选项,例如legend.spacing.x/ylegend.key.width/height。这些选项仅适用于第一个图例组。

有没有办法减小不同颜色键之间的大小?更改键的大小也很容易发现。

为了使我的要求更加明确,这是我要调整的差距: enter image description here

谢谢。

2 个答案:

答案 0 :(得分:0)

我不确定您需要什么,但我想您希望使图例中的点更小。在这种情况下,override.aes()是您需要的功能。

如果您的问题不同,请进一步说明,以便我们为您提供帮助。

library(ggplot2)

ggplot() + 
  geom_point(data = mtcars, aes(x = disp, y = mpg, color = gear), 
             pch =20, size=18) + 
  geom_line(data = mtcars, aes(x = disp, y = mpg, size = disp/mpg*100)) +
  scale_size(range = c(0,3.5)) +
  guides(size = guide_legend("", order = 1, keywidth = 2, keyheight = 1.5), 
         color = guide_legend("", order = 2, keywidth = 1, keyheight = 1, 
                              override.aes = list(size=9))) +
  labs(x = "disp", y = "mpg") +
  geom_text(size=2.7, color = "grey29",  vjust=-0.8) +
  theme_bw()

reprex package(v0.3.0)于2019-07-08创建

答案 1 :(得分:0)

图例间距始终是一个问题,并获得很多投票e.g. here。 我认为您的特定示例中的问题之一可能是gear的连续性。分解可能会有所帮助(如果您的值比gear多,请改用cut()),然后使用guidesunit()调用中更改图例间距。我将您的代码简化了一点,并用title = ''替换了title = NULL,因为否则ggplot实际上是在绘制一个空对象。

library(tidyverse)

mtcars_f <- mtcars %>% mutate(gear_f = factor(gear)) #factorising gear

ggplot(mtcars_f, aes(disp, mpg)) + 
  geom_point(aes(color = gear_f), size = 10) + 
  geom_line(aes(size = disp/mpg*100)) +
  guides(size = guide_legend(title = NULL, order = 1, 
         keyheight = unit(0.1, 'inch')), 
         color = guide_legend(title = NULL, order = 2, 
         keyheight = unit(0.1, 'inch'))) +
  scale_color_brewer(palette = 'Blues') +
  theme(legend.key= element_blank())

reprex package(v0.3.0)于2019-07-19创建