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

如何移除R ggplot离散y轴geom_density_ridges_gradient图x轴额外间距

问题解决方案

该空白和山脊图的scale参数无关,主要来自离散Y轴默认的底部扩展空间,以及主题默认的轴元素边距设置,可按以下步骤调整:

  • 给离散Y轴添加scale_y_discrete()配置,修改expand参数压缩底部空白:默认离散轴会在最下方类别下预留5%的空白,可将下扩展比例设为0甚至负数值,按需调整即可。
  • 覆写theme中的轴标题边距与画布边距,进一步缩小x轴标签和绘图区的间距。

修改后的完整代码如下:

library(tidyverse)
library(ggridges)
library(scales)

sample_q <- ggplot(data, aes(x=value/1000,y=factor(category),group=category)) + 
  geom_density_ridges_gradient(scale=.5) +
  theme_ridges(center_axis_labels = TRUE,grid=TRUE) +
  xlab("Values") +
  ylab("Height") +
  scale_y_discrete(
    # 第一个参数为y轴底部扩展比例,第二个为顶部扩展比例,可按需调小第一个值
    expand = expansion(mult = c(-0.08, 0.05))
  ) +
  scale_x_continuous(expand = c(0,0), limits = c(-15,15), breaks=c(-15,-10,-5,0,5,10,15)) +
  theme(
    text=element_text(size=10),
    # 缩小x轴标题和坐标轴的间距
    axis.title.x = element_text(margin = margin(t = 3, unit = "pt")),
    # 缩小画布底部边距
    plot.margin = margin(5, 5, 2, 5, unit = "pt")
  )

你可以根据实际显示效果微调expansion(mult = c(-0.08, 0.05))里的第一个数值,数值越小(负数值的绝对值越大)底部空白越小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:54:08