求助:如何绘制以字符串为X轴、均值为高度的条形图
解决按水果类型汇总绘制均值条形图的问题
嘿,这个问题我之前也碰到过!核心问题是你直接用原始的逐条数据绘图了,没有先按水果类型汇总计算均值,所以才会出来一百多个条形。咱们分两步就能搞定:
第一步:先按水果类型汇总均值
这里给你两种常用的方法,选你顺手的就行:
方法1:用Base R自带的aggregate()函数
假设你的数据框叫fruits,包含type(水果类型)和amount(对应数值)两列:
# 按type分组,计算每组amount的均值 fruit_summary <- aggregate(amount ~ type, data = fruits, FUN = mean)
方法2:用dplyr的管道语法(更直观)
如果你习惯tidyverse的风格,先装包加载:
install.packages("dplyr") # 第一次用需要安装 library(dplyr) # 分组后计算均值 fruit_summary <- fruits %>% group_by(type) %>% summarise(mean_amount = mean(amount))
第二步:用汇总好的数据绘制条形图
现在用汇总后的fruit_summary绘图,就能得到每个水果对应一个条形的效果了:
Base R版本
# 如果你用的是aggregate的结果(列名是type和amount) barplot(fruit_summary$amount, names.arg = fruit_summary$type, main = "各水果类型的均值条形图", xlab = "水果类型", ylab = "均值") # 如果你用的是dplyr的结果(列名是type和mean_amount) barplot(fruit_summary$mean_amount, names.arg = fruit_summary$type, main = "各水果类型的均值条形图", xlab = "水果类型", ylab = "均值")
进阶:用ggplot2画更美观的图
要是想让图看起来更专业,试试ggplot2,还能轻松处理X轴标签重叠的问题:
install.packages("ggplot2") library(ggplot2) ggplot(fruit_summary, aes(x = type, y = mean_amount)) + geom_bar(stat = "identity", fill = "#2196F3") + labs(title = "各水果类型的均值条形图", x = "水果类型", y = "均值") + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转X轴标签,避免挤在一起
这样操作后,你就能得到每个水果类型对应一个条形,高度正好是该类型的均值啦!
内容的提问来源于stack exchange,提问作者helloworld
相关产品推荐
相关产品推荐

