ggplot2分面绘图如何实现x/y轴镜像仅保留外侧坐标轴
ggplot2分面仅外侧显示镜像坐标轴实现方案
方法1:原生ggplot2实现(无需额外安装包,适用于ggplot2 3.4.0及以上版本)
直接在facet_grid()中设置坐标轴显示规则,配合scale_*_continuous()调整轴位置即可,不需要修改其他绘图组件:
library(ggplot2) ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point() + facet_grid( rows = vars(Species), # 核心参数:仅在分面网格的最外侧绘制坐标轴,内部分面交界位置不显示轴 axes = "outside", # 要镜像y轴到右侧就设置switch = "y",镜像x轴到顶部则设置switch = "x" switch = "y" ) + # 和switch参数匹配,将y轴刻度标签放置在右侧 scale_y_continuous(position = "right")
运行代码即可得到和参考图完全一致的效果:垂直排列的3个分面,仅最右侧显示y轴、最底部显示x轴,分面内侧无任何坐标轴刻度、轴线。如果运行时提示axes参数不存在,说明本地ggplot2版本过低,先运行install.packages("ggplot2")升级到最新版即可。
方法2:ggh4x包扩展实现(支持更灵活的自定义调整)
如果需要对分面轴、分面条带做更细粒度的自定义,可以用ggh4x包提供的增强分面函数:
# 首次使用请先安装 # install.packages("ggh4x") library(ggh4x) ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point() + facet_grid2( rows = vars(Species), # 核心参数:仅在分面边缘显示坐标轴 axes = "margins", # 可单独调整条带、轴的位置和样式 strip = strip_themed(position = "right") ) + scale_y_continuous(position = "right")
补充说明:如果需要把x轴镜像到分面顶部,只需要把上述代码中y轴对应的位置参数替换为x轴配置即可:设置
switch = "x"、scale_x_continuous(position = "top"),就能实现x轴全局在顶部显示、内侧无x轴的效果。

内容的提问来源于stack exchange,提问作者Marco_CH
相关产品推荐
相关产品推荐

