You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:54:03