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

如何调整ggplot中facet堆叠子图的排列顺序?

调整ggplot分面(facet)的堆叠顺序

当然可以轻松调整子图的排列顺序!核心方法是通过**自定义因子水平(factor levels)**来控制分面的展示顺序,具体操作如下:

步骤1:为Zone列设置自定义顺序的因子

ggplot默认会按照字符的字典序或因子默认水平排列分面,我们手动指定Zone的因子水平,就能让子图完全按你想要的顺序展示:

# 将Zone转换为指定顺序的因子
region_data$Zone <- factor(region_data$Zone, 
                           levels = c("Eastern", "Central", "Northern", "Western"))

步骤2:修正并运行ggplot代码

注意你原来的代码中同时使用了facet_wrap和facet_grid,这会造成冲突(只有最后一个分面函数生效),建议保留facet_grid来实现上下堆叠的效果,修改后的完整代码如下:

region_plot = ggplot(region_data, aes(fill = Disease, x = Year, y = Average_rate)) + 
  ylab("Average Rate") + 
  geom_bar(position="stack", stat="identity") + 
  scale_fill_manual("legend", values = c("Lyme Disease - Confirmed" = "red", "Lyme Disease - Probable" = "grey")) + 
  theme_bw() + 
  theme(panel.border = element_blank(), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black")) + 
  ylim(0, 260) + 
  facet_grid(Zone ~ ., scales = "free_y") # 仅保留该分面函数实现上下堆叠
region_plot

关键说明

  • 因子水平的顺序直接决定了分面的排列顺序,你可以根据需求随时调整levels参数里的字符串顺序。
  • 避免同时使用多个分面函数(facet_wrap和facet_grid),否则会导致预期外的展示效果。

内容的提问来源于stack exchange,提问作者Kristen Cyr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:08