You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何减小ggplot2 size美学映射图例键的垂直间距

问题

请问如何减小size图例中各图例键之间的间距?无需调整另一类color(颜色)图例的间距。
当前图例效果
当前使用的简化绘图代码如下:

data %>%
  ggplot( aes(x=x, y=y, size=z, color=c, alpha=d))+
  geom_point()+
  scale_size_area(name="Cumulative excess deaths (thousands)", 
                  max_size = 70, limits=c(NA, 10000),
                  breaks=c(1, 10, 100,500,1000, 5000))+
  geom_abline(slope=1, intercept = 0, size=0.2)+
  scale_color_manual(name="World Bank Income group")+
  scale_alpha_manual(values=c(0.55,0.2))+
  labs(...)+
  theme_bw()+
  theme(
    plot.margin = margin(0.5, 0.2, 0.5, 0.5, "cm"),
    plot.background = element_rect(size = 1),
    plot.caption.position="plot",
    legend.position="right",
    legend.box.margin = margin(2,0,0,0, "cm"),
    legend.title=element_text(size=8,color="black", hjust=0),
    legend.text =element_text(size=8,color="black"),
    legend.spacing = unit(-0.5, "cm"),
    legend.key.size = unit(1,"line"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.border = element_blank())+
  coord_cartesian(clip = 'off')+
  guides(alpha=FALSE)+
  guides(size=guide_legend(override.aes=list(shape=1),order=1),
        color = guide_legend(override.aes = list(size=6, alpha=0.55),
order=2))
解决方法

不要在全局theme()中修改图例间距参数,这类全局设置会同时作用于所有图例。你只需要在size对应的guide_legend()配置项中单独设置图例键尺寸、间距参数即可,这类参数仅对当前生效的图例有效,完全不会改动color图例的原有间距。

具体修改方式是调整guides()中size图例的配置,添加keyheight参数控制单个图例键的高度(size图例默认给所有键分配统一高度,小尺寸点周围会产生大量空白,缩小该值即可压缩空白),如果需要进一步缩小键与键之间的空隙,可以搭配spacing.y参数(ggplot2 3.5.0及以上版本支持):

guides(
  alpha = FALSE,
  size = guide_legend(
    override.aes = list(shape=1),
    order = 1,
    # 调整单个图例键的高度,数值可根据显示效果微调,不要过小避免最大点被裁切
    keyheight = unit(0.6, "line"),
    # 可选:调整图例键之间的垂直间距,数值越小间距越窄
    spacing.y = unit(0.1, "line")
  ),
  color = guide_legend(
    override.aes = list(size=6, alpha=0.55),
    order = 2
    # 此处不添加间距相关配置,自动沿用全局theme设置,保持原有间距
  )
)
  • 你可以根据实际渲染效果反复调整unit()内的数值,直到size图例的间距符合预期
  • 如果使用的ggplot2版本较低不支持spacing.y参数,仅调整keyheight即可达到压缩间距的效果

内容的提问来源于stack exchange,提问作者Philip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:36:19