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

ggplot2分组柱状图:分组统计结果与总计值双柱展示

绘制指定分组柱状图的解决方案

步骤1:数据准备与统计

首先需要对原始数据做统计处理,分别算出col3='yes'时col2各值的出现次数,以及col2各值的总出现次数,再把两个统计结果整合成适合绘图的长格式数据。

先加载所需工具包(首次使用请先安装):

# 安装依赖包(仅首次运行)
install.packages(c("dplyr", "ggplot2"))

# 加载包
library(dplyr)
library(ggplot2)

原始数据:

df = data.frame(col1 = c('a', 'b', 'c','d','e'), col2 = c(3,1,2,3,1), col3 = c('yes','yes','no','no','yes'))

统计并整理数据:

# 统计col3为yes时col2各值的次数
yes_counts <- df %>%
  filter(col3 == "yes") %>%
  count(col2, name = "count") %>%
  mutate(group = "col3=yes时的次数")

# 统计col2各值的总次数
total_counts <- df %>%
  count(col2, name = "count") %>%
  mutate(group = "总次数")

# 合并两个数据集
plot_data <- bind_rows(yes_counts, total_counts)

步骤2:绘制分组柱状图

用ggplot2绘制分组柱状图,x轴对应col2的取值,每组包含两根柱子,分别对应"col3=yes时的次数"和"总次数":

ggplot(plot_data, aes(x = factor(col2), y = count, fill = group)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  labs(
    x = "col2的取值",
    y = "出现次数",
    title = "分组柱状图",
    fill = "统计类型"
  ) +
  theme_minimal() +
  scale_fill_brewer(palette = "Set2")

运行代码后会生成符合需求的图表:x轴展示col2的1、2、3三个取值,每个位置的两根柱子分别对应该值在col3为yes时的出现次数,以及该值的总出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:55:15