ggplot2多facet分面中仅反转单个分面Y轴的实现方法咨询
实现方案
可以实现单独反转指定分面的Y轴,无需拼接多个独立绘图,借助ggh4x包的facetted_pos_scales()函数即可完成。如果未安装该包,先运行install.packages("ggh4x")安装即可。
完整可运行代码如下:
library(tidyverse) library(ggh4x) # 示例数据 set.seed(1) df <- tibble( A1 = rnorm(50, 1, 1), A2 = rnorm(50, 2, 1), A3 = rnorm(50, 3, 1), B1 = rnorm(50, 10, 10), B2 = rnorm(50, 20, 10), B3 = rnorm(50, 30, 10), C1 = rnorm(50, 200, 50), C2 = rnorm(50, 150, 50), C3 = rnorm(50, 100, 50)) %>% pivot_longer(cols = everything()) %>% extract(name, into = c("Activity", "Group"), regex = "([A|B|C])([0-9])") # 修改后的绘图代码 df %>% ggplot(aes(x = Group, y = value, color = Group, fill = Group))+ geom_jitter(width = 0.15)+ geom_boxplot(alpha = 0.1, color = "black", outlier.shape = NA)+ facet_wrap(~Activity, scales = "free")+ # 单独为C分面指定反转Y轴规则 facetted_pos_scales( y = list( Activity == "C" ~ scale_y_reverse() ) )+ theme_bw()
facetted_pos_scales()支持为不同分面匹配独立的坐标轴设置,可自定义X/Y轴的刻度、范围、方向等规则- 上述代码仅针对
Activity == "C"的分面指定Y轴反转,其余分面保持原有坐标轴逻辑,不需要额外调整数据或拆分绘图
内容的提问来源于stack exchange,提问作者Steen Harsted
相关产品推荐
相关产品推荐

