作为对这个著名帖子的跟进,我决定提出一个新问题,因为这更具体地针对垂直图例,并且给定的答案仍然没有提供完全令人满意的解决方案。对于多边形关键字形状,有建议增加实际多边形图形和关键字边框之间的空白大小,并进行底层draw_key函数的修改,但是,如果我想保持边框(例如黑色),这并不真正起作用。
当使用其他几何形状(例如geom_line)时,我甚至不知道如何增加图形和边框之间的空白大小——在ggplot2:::GeomLine
中使用的draw_key函数简要查看时(它没有使用导出的draw_key函数),我不清楚应该在哪里进行修改。
所以,我的问题是是否有一种方法可以更改关键字形状之间的实际间隔,从而允许保留边框(例如颜色="black"),而不增加图形大小。
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
示例图:主要的图形接触。
p + theme(legend.key.height = unit(.5, "in"))
如果我移除颜色,这个示例看起来似乎字形之间有更多的空隙,但我希望关键字形大小与上面相同,只是它们之间有间距。
![](https://i.imgur.com/uF3pbdR.png)
在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) * .pt, lty = data$linetype %||%
#> 1, lineend = "butt"), arrow = params$arrow)
#> ...
由 reprex软件包 (v2.0.1) 创建于2021年12月29日
注:这个问题是在回答这个有趣的问题时提出的。