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

如何在ggplot中分组因子水平,将美国各州堆叠为单一条形?

简便实现堆叠美国州的条形图方案

其实不用复杂操作,只需要先给数据加一个大类分组列,再调整ggplot的映射逻辑就能搞定,步骤很清晰:

1. 新增区域分组列

我们需要把所有美国州统一归到"US"这个大类里,同时保留原始的location信息(满足你不想合并州的需求)。这里提供两种实现方式:

方式一:用dplyr(推荐,语法更直观)

library(dplyr)
df <- df %>%
  mutate(region = case_when(
    grepl("US:", location) ~ "US",
    TRUE ~ as.character(location)
  )) %>%
  mutate(region = factor(region))  # 转成因子保证分类顺序

方式二:Base R实现(无需额外包)

df$region <- as.character(df$location)
df$region[grepl("US:", df$region)] <- "US"
df$region <- factor(df$region)

2. 绘制堆叠条形图

现在用region作为x轴的分类,用原始的location作为填充色(美国的三个州会自动堆叠在一起):

library(ggplot2)
ggplot(df, aes(x = region, fill = location)) +
  geom_bar(stat = "identity") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), text = element_text(size=10)) +
  labs(fill = "细分区域")  # 可以给图例改个更清晰的名字

效果说明

  • x轴会显示三个独立条形:加拿大、墨西哥、美国
  • 美国的条形会拆分成三个州的堆叠部分,每个州对应不同颜色,完美保留了你需要的州区分信息
  • 原始的location列完全未被修改,后续数据分析依然可以正常使用

这样操作既简单,又完全满足你的需求,比复杂的自定义堆叠逻辑省心多了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:09:14