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

在R语言中基于聚合数据绘制分组条形图的技术求助

解决分组条形图绘制问题及优化建议

问题根源

你用table()函数的方式不对,这个函数是用来生成频数交叉统计表的,不是直接转换现有数值列的结构,所以得到的结果不符合预期。

基础R(base R)解决方案

假设你的数据结构是这样的(三列:燃料类型、2018年数量、2021年数量):

# 模拟你的数据结构
fuel_trend <- data.frame(
  fuel_type = c("汽油", "柴油", "电动", "混动"),
  `2018` = c(1000, 800, 150, 200),
  `2021` = c(900, 700, 500, 350)
)

正确的做法是把年份列转换成矩阵,行名设为燃料类型,再用barplot()绘制:

# 提取年份列并转为矩阵,行名设为燃料类型
plot_data <- as.matrix(fuel_trend[, c("2018", "2021")])
rownames(plot_data) <- fuel_trend$fuel_type

# 绘制分组条形图
barplot(plot_data,
        beside = TRUE,  # 并排展示分组
        col = c("#2E86AB", "#F24C4C"),  # 自定义颜色
        main = "各燃料类型车辆数量变化(2018 vs 2021)",
        xlab = "燃料类型",
        ylab = "车辆数量",
        legend.text = colnames(plot_data),  # 添加图例
        args.legend = list(x = "topright")  # 图例位置
)

更优可视化方案:用ggplot2绘制

ggplot2在灵活性和美观度上更有优势,需要先把数据转成长格式(tidy data):

  1. 先安装并加载所需包:
install.packages(c("ggplot2", "tidyr"))
library(ggplot2)
library(tidyr)
  1. 转换数据格式并绘图:
# 把宽格式数据转为长格式
fuel_trend_long <- pivot_longer(fuel_trend, 
                                cols = c("2018", "2021"),
                                names_to = "年份",
                                values_to = "车辆数量")

# 绘制分组条形图
ggplot(fuel_trend_long, aes(x = fuel_type, y = 车辆数量, fill = 年份)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +  # 分组并排
  geom_text(aes(label = 车辆数量),  # 添加数值标签
            position = position_dodge(width = 0.8),
            vjust = -0.5, size = 3.5) +
  scale_fill_manual(values = c("#2E86AB", "#F24C4C")) +  # 自定义颜色
  labs(title = "各燃料类型车辆数量变化(2018 vs 2021)",
       x = "燃料类型", y = "车辆数量") +
  theme_minimal() +  # 简洁主题
  theme(plot.title = element_text(hjust = 0.5))  # 标题居中

额外可视化建议

  • 排序条形:可以按2021年的车辆数量对燃料类型排序,让图表更易读,比如在ggplot2里用x = reorder(fuel_type, -车辆数量)
  • 调整坐标轴:如果数值差距大,可考虑用对数坐标轴(scale_y_log10()),但需注意说明
  • 添加误差线:如果有标准差等统计数据,可叠加误差线展示数据波动
  • 配色优化:使用色盲友好的配色方案,比如scale_fill_viridis_d()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:20:41