有没有办法在ggplot2中更改图例项之间的间距?我现在有
legend.position ="top"
Run Code Online (Sandbox Code Playgroud)
它会自动生成水平图例.然而,物品的间距非常接近,我想知道如何将它们分开更远.
作为这个著名线程的后续。我决定提出一个新问题,因为这更具体针对垂直图例,并且给出的答案仍然没有提供完全令人满意的解决方案。对于多边形键字形,有人建议通过修改底层的draw_key函数来增加实际多边形字形和键边框之间的边距大小。但是,如果我想保留边框(例如黑色),这实际上不起作用。
当使用其他几何对象(例如,geom_line)时,我什至不知道如何增加字形和边框之间的边距 - 简要浏览一下中使用的draw_key函数ggplot2:::GeomLine(它不使用导出的draw_key函数),它我不清楚在哪里修改它。
所以,我的问题是是否有一种方法可以改变关键字形之间的实际空间,从而允许保留边框(例如,颜色=“黑色”),并且不增加字形大小。
library(ggplot2)
p <- ggplot(dplyr::filter(msleep, grepl("^C", order)),
aes(sleep_total, sleep_rem, color = order)) +
geom_line(na.rm = TRUE) +
theme(legend.key = element_rect(color = "black"))
p
Run Code Online (Sandbox Code Playgroud)
示例图:关键字形接触。

p + theme(legend.key.height = unit(.5, "in"))
Run Code Online (Sandbox Code Playgroud)
如果我删除颜色,看起来字形的间距会更大,但我希望关键字形的大小与上面相同,只是它们之间有间距。

GeomLine 中的底层draw_key
# ggplot2:::GeomLine$draw_key
#> ...
#> segmentsGrob(0.1, 0.5, 0.9, 0.5, gp = gpar(col = alpha(data$colour %||%
#> data$fill %||% "black", data$alpha), fill = alpha(params$arrow.fill %||%
#> data$colour %||% data$fill %||% "black", data$alpha),
#> lwd = (data$size %||% 0.5) * …Run Code Online (Sandbox Code Playgroud)