在图例ggplot2周围画一个框

Dan*_* C. 13 r legend ggplot2 legend-properties

我创建了一个带有自定义图例的情节ggplot2.我试图在图例中的所有项目周围绘制一个框,但是我只能在每个单独的项目周围绘制一个框.如何围绕所有项目只创建一个框?

library(ggplot2)

ggplot(mpg, aes(displ, cty)) + 
  geom_point(aes(shape = "Data")) +
  stat_smooth(aes(linetype = "Regression"), method = "lm", 
              formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
  scale_shape_manual(values = 1) +
  labs(shape = "", linetype = "") +
  theme_classic() + 
  theme(panel.border = element_rect(colour = "black", fill=NA),
        aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
        legend.background = element_rect(linetype = 2, size = 0.5, colour = 1))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

San*_*att 13

看起来legend.background矩形与矩形重叠legend.box.background.一个简单的解决方法是设置legend.background = element_blank().

但是,在我看来,传说中的间距很难看.即使没有标题设置,图例标题也会占用太多空间.修复此设置legend.title = element_blank().两个图例之间的间距也太大.通过将空间设置为零来解决此问题legend.spacing.y = unit(0, "mm")

library(ggplot2)

ggplot(mpg, aes(displ, cty)) + 
  geom_point(aes(shape = "Data")) +
  stat_smooth(aes(linetype = "Regression"), method = "lm", 
              formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
  scale_shape_manual(values = 1) +
  labs(shape = "", linetype = "") +
  theme_classic() + 
  theme(legend.title = element_blank(),
        legend.spacing.y = unit(0, "mm"), 
        panel.border = element_rect(colour = "black", fill=NA),
        aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
        legend.background = element_blank(),
        legend.box.background = element_rect(colour = "black"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述