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

如何使用ggplot2的geom_col为每个分组绘制单个粗柱状图

解决ggplot2 geom_col多细柱问题:每个分组仅显示单个粗柱

问题原因

你当前的数据集里,Group 1和Group 2各自对应多条重复的mean_group数值记录,geom_col默认会为每一行数据绘制一个柱子,导致同一个分组下出现多个重叠的细柱。

解决方案

下面提供两种简单的修改方式:

方式一:先对数据去重

先提取每个Group对应的唯一mean_group值,再用处理后的数据绘制柱状图:

library(dplyr)
library(ggplot2)

# 保留每个Group的唯一mean_group记录
exp_unique <- exp %>% 
  distinct(Group, mean_group)

# 绘图
p <- ggplot(exp) +
  # 使用去重后的数据画柱状图
  geom_col(data = exp_unique, aes(x = Group, y = mean_group)) +
  geom_dotplot(binaxis='y', stackdir='center', stackgroups = TRUE, binpositions="all", dotsize=0.8,
               colour="Black", fill="Black", aes(x=Group, y = mean_sample)) 
p

方式二:用stat_summary替代geom_col

无需预处理数据,直接用stat_summary计算每个分组的均值(因为同一分组的mean_group值完全相同,均值就是其本身),自动合并为单个柱子:

library(ggplot2)

p <- ggplot(exp) +
  stat_summary(aes(x = Group, y = mean_group), fun = mean, geom = "col") +
  geom_dotplot(binaxis='y', stackdir='center', stackgroups = TRUE, binpositions="all", dotsize=0.8,
               colour="Black", fill="Black", aes(x=Group, y = mean_sample)) 
p

效果说明

两种方式都能让Group 1和Group 2各自显示一个粗柱状图,同时保留原来的点图部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:35:08