ggplot2中使用coord_flip后如何移除Y轴旁空白区域?
解决ggplot2中
coord_flip()后Y轴旁空白区域的问题 这个问题我碰到过好多次啦——当你用coord_flip()把柱状图翻转后,Y轴旁边出现的空白,其实是ggplot对离散坐标轴默认添加的扩展空间导致的。咱们直接看怎么修复:
核心解决方案
翻转坐标轴后,原来的X轴(离散型的行名)变成了Y轴,所以只需要给离散型Y轴设置expand = c(0, 0),就能完全移除两侧的空白。如果想要保留一丢丢空白避免柱子贴边,也可以把参数改成c(0, 0.05)这类小数值,灵活调整就行。
修改后的完整代码
library(ggplot2) library(gridExtra) # 修复后的p1:移除翻转后的Y轴空白 p1 <- ggplot(mtcars, aes(x = row.names(mtcars), mpg)) + geom_bar(stat = "identity") + coord_flip() + scale_y_discrete(expand = c(0, 0)) + # 关键代码 ggtitle("Fig. A: Default rotated x-axis (no blank)") # 修复后的p2:同样移除空白 p2 <- ggplot(mtcars, aes(x = reorder(row.names(mtcars), mpg), y = mpg)) + geom_bar(stat = "identity") + coord_flip() + scale_y_discrete(expand = c(0, 0)) + # 关键代码 ggtitle("Fig. B: Rotated ordered x-axis (no blank)") grid.arrange(p1, p2, ncol = 2)
额外说明
如果你用的是ggplot2 3.3.0及以上版本,也可以在翻转前先给X轴设置expand = c(0,0),再用coord_flip(),效果是一样的:
p1 <- ggplot(mtcars, aes(x = row.names(mtcars), mpg)) + geom_bar(stat = "identity") + scale_x_discrete(expand = c(0, 0)) + coord_flip() + ggtitle("Fig. A: Default rotated x-axis (no blank)")
内容的提问来源于stack exchange,提问作者Vik G
相关产品推荐
相关产品推荐

