如何基于Saltwater子图重排ggh4x::facet_wrap2中的geom_col顺序
解决方法
错误原因是facet_wrap2的分面公式中不能直接使用fct_reorder函数——该函数用于调整因子水平顺序,而非定义分面分组逻辑。正确思路是提前在数据中按Saltwater组的total_count排序Method_Used的因子水平,再绘图让所有分面遵循同一x轴顺序。
步骤1:预处理数据,定义统一排序规则
假设你的数据集名为df,先提取Saltwater组的排序结果,将Method_Used转换为对应顺序的因子:
library(dplyr) # 提取Saltwater组中Method_Used按total_count从低到高的排序 saltwater_order <- df %>% filter(Category == "Saltwater") %>% # 替换为你的分面列名 arrange(total_count) %>% pull(Method_Used) # 将Method_Used转换为因子,水平按saltwater_order排列 df$Method_Used <- factor(df$Method_Used, levels = saltwater_order)
步骤2:绘制分面柱状图
用处理后的数据集绘图,无需在facet_wrap2中添加排序逻辑:
library(ggplot2) library(ggh4x) ggplot(df, aes(x = Method_Used, y = total_count)) + geom_col() + facet_wrap2(~Category) # 替换为你的分面列名
这样所有分面的x轴Method_Used都会严格按照Saltwater组的total_count从低到高排序,同时避免了原错误。
内容的提问来源于stack exchange,提问作者Kristen Cyr
相关产品推荐
相关产品推荐

