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

