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

如何恢复ggplot中被裁剪的倾斜X轴标签?

解决X轴标签被裁剪的优化方案

方案1:调整绘图底部边距

在theme()中添加plot.margin参数,为底部留出足够空间容纳旋转后的标签:

melt(mat_reordered) %>% ggplot(., aes(x=Var1, y=Var2)) + 
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = value)) +
  scale_fill_gradient(low = "white", high = "red") +
  theme(legend.title = element_blank(),
        axis.title=element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),  # 将hjust改为1,让标签右对齐贴合X轴
        plot.margin = margin(b = 50, unit = "pt"))  # 底部边距设为50pt,可根据标签长度调整数值

方案2:修正标签对齐方式

把axis.text.x中的hjust参数从-0.2改为1,让标签紧贴X轴底部,避免超出绘图区域:

melt(mat_reordered) %>% ggplot(., aes(x=Var1, y=Var2)) + 
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = value)) +
  scale_fill_gradient(low = "white", high = "red") +
  theme(legend.title = element_blank(),
        axis.title=element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

方案3:缩小标签字体(适合长标签场景)

如果标签文本过长,可适当缩小字体大小,配合边距调整:

melt(mat_reordered) %>% ggplot(., aes(x=Var1, y=Var2)) + 
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = value)) +
  scale_fill_gradient(low = "white", high = "red") +
  theme(legend.title = element_blank(),
        axis.title=element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size=8),  # 缩小字体至8号
        plot.margin = margin(b = 30, unit = "pt"))

方案4:翻转坐标轴(彻底解决长标签问题)

使用coord_flip()翻转坐标轴,让原X轴标签垂直显示在左侧,既避免裁剪又提升可读性:

melt(mat_reordered) %>% ggplot(., aes(x=Var1, y=Var2)) + 
  geom_tile(aes(fill = value)) + 
  geom_text(aes(label = value)) +
  scale_fill_gradient(low = "white", high = "red") +
  coord_flip() +  # 翻转坐标轴
  theme(legend.title = element_blank(),
        axis.title=element_blank())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:12:06