使用coord_fixed()的ggplot分面图如何添加独立X轴标签
解决ggplot分面图固定宽高比时显示每个子图X轴标签的问题
有两种简便方案可以实现需求,不需要拆分图表或额外处理共享图例:
方案一:使用ggh4x包的facet_wrap2(推荐)
ggh4x扩展包的facet_wrap2支持在coord_fixed()的前提下,为每个分面子图显示独立的轴标签,且自动保留共享图例。
首先安装并加载包:
install.packages("ggh4x") library(ggplot2) library(ggh4x)
修改你的代码:
data <- expand.grid(x = 1:10, y = 1:10) data$col <- rpois(nrow(data), lambda = 10) data <- rbind(cbind(data, "type" = "a"), cbind(data, "type" = "b")) ggplot() + geom_tile(data = data, aes(x = x, y = y, fill = col)) + labs(x = "very long label of x") + facet_wrap2(~type, ncol = 2, axes = "all") + # axes="all"参数让每个子图显示轴标签 coord_fixed()
方案二:原生ggplot主题调整
不依赖额外包,通过强制修改主题元素,让每个分面面板都显示X轴标签和刻度:
library(ggplot2) data <- expand.grid(x = 1:10, y = 1:10) data$col <- rpois(nrow(data), lambda = 10) data <- rbind(cbind(data, "type" = "a"), cbind(data, "type" = "b")) ggplot() + geom_tile(data = data, aes(x = x, y = y, fill = col)) + labs(x = "very long label of x") + facet_wrap(~type, ncol = 2) + coord_fixed() + theme( axis.title.x = element_text(), # 强制显示X轴标题 axis.text.x = element_text(), # 强制显示X轴刻度文本 axis.ticks.x = element_line(), # 强制显示X轴刻度线 strip.placement = "outside" # 把分面标签移到轴标签上方,避免重叠 )
内容的提问来源于stack exchange,提问作者Zoe
相关产品推荐
相关产品推荐

