如何调整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
相关产品推荐
相关产品推荐

