如何使用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
相关产品推荐
相关产品推荐

