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

如何使用ggplot2绘制X轴每分类对应两个值的垂直并列条形图

报错原因

geom_bar() 默认的统计转换规则是stat = "count",作用是统计x轴分类下的观测数量生成条形高度,该规则下不允许同时指定y轴映射,因此你同时配置了x、y两个映射就会触发该报错。

修复方案

你要直接使用已经计算好的change列数值作为条形高度,只需要对geom_bar()的参数做调整,另外你代码中用到的comma格式函数来自scales包,需要提前加载避免二次报错。

修正后的完整代码如下:

library(dplyr)
library(ggplot2)
library(scales) # 新增,用于支持comma数值格式

seriescode <- c(00,11,22,23)
seriestitle <-c("Total Nonfarm","Mining","Utilities","Construction")
first <- c(100,20,32,44)
second <- c(95,17,25,30)
third <- c(98,18,26,33)

bartest <-data.frame(seriescode,seriestitle,first,second,third)

bartest <- bartest %>% mutate(Decline = first - second)
bartest <- bartest %>% mutate(Recovery = third-second)

bartest <- bartest %>% pivot_longer(cols = Decline:Recovery, names_to = "change_type", values_to = "change")

chart4 <- bartest %>% 
  ggplot(aes(x=seriestitle,y=change, fill = change_type)) +
  # 新增stat="identity"用现有y值作为高度,position="dodge"实现并列条形
  geom_bar(stat = "identity", position = "dodge") +
  labs(x="Industry",y="Net Change") +
  scale_y_continuous(labels = comma) +
  ggtitle("Decline and Recovery by Industry")

# 调用对象输出图表
chart4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:45:03