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

如何基于多数值区间创建带多填充变量的Grouped Bar Plot?

实现多分组填充的分组条形图

你之前用ifelse做二元分类的思路没问题,但要实现三个及以上的分类,用dplyr里的case_when会更清晰,还能避免嵌套ifelse的混乱。另外注意你给出的区间里20-59和50-100有重叠,会导致部分数据被错误归类,先把区间调整为互斥的:<10, 10-19, 20-49, 50-100, >100,下面是具体步骤:

1. 创建多分类变量

用case_when按顺序匹配数值区间,生成新的分类列:

# 先加载需要的包
library(dplyr)
library(ggplot2)

# 处理数据,生成多分类列
new_data <- data %>%
  mutate(
    new_variable = case_when(
      variable < 10 ~ "<10",
      variable >= 10 & variable < 20 ~ "10-19",
      variable >= 20 & variable < 50 ~ "20-49",
      variable >= 50 & variable <= 100 ~ "50-100",
      variable > 100 ~ ">100",
      TRUE ~ NA_character_ # 处理不符合任何区间的数值(比如NA)
    )
  )

case_when会按从上到下的顺序匹配条件,一旦匹配成功就停止,所以要注意区间的顺序逻辑。最后一行的TRUE ~ NA_character_是兜底处理,把所有不满足前面条件的数值标记为NA,方便后续排查异常。

2. 绘制分组条形图

要生成**分组(并排)**的条形图,关键是给geom_bar加上position = "dodge"参数,让同一x轴类别下的不同填充分组并排显示:

ggplot(new_data, aes(x = random_variable, fill = new_variable)) +
  geom_bar(position = "dodge") + # position="dodge"实现分组并排,默认stat="count"统计数量
  labs(
    title = "多分组变量的分组条形图",
    x = "随机变量",
    y = "计数",
    fill = "变量分组" # 修改图例标题
  )

如果你的数据需要按其他统计量(比如均值)绘制,就把geom_bar换成geom_col,并在aes里指定y对应的统计列即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:54:09