如何移除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
相关产品推荐
相关产品推荐

