R语言:筛选行后绘制分组条形图失败(条形堆叠)求助
问题修正方案
你的代码出现堆叠条形而非分组展示的核心原因有两个:一是未将分组变量映射到fill/color参数,二是y轴指定的是分类变量而非要展示的数值数据。以下是修正后的可运行代码:
library(ggplot2) library(dplyr) target <- c("x", "y") # 把下面的`value`替换成你数据中实际存储数值的列名 filtered_dat <- filter(dat, column %in% target) ggplot(filtered_dat, aes(x = year, y = value, fill = column)) + geom_col(position = position_dodge(width = 0.7), width = 0.7) + geom_text(aes(label = value), colour = "white", position = position_dodge(width = 0.7), vjust = 1.5) # 调整文字位置,避免被条形遮挡
关键调整说明:
- 在
aes()中添加fill = column:明确告诉ggplot按column的不同取值(x和y)进行分组 - y轴替换为实际数值列:
geom_col需要基于数值来绘制条形高度,不能用分类变量 - 统一
position_dodge(width = 0.7):让分组的条形和对应文字严格对齐,宽度参数和条形宽度保持一致 - 调整
vjust参数:将文字固定在条形内部下方,避免被条形本身遮挡
内容的提问来源于stack exchange,提问作者onlyjust17
相关产品推荐
相关产品推荐

