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

如何使用ggplot2绘制分组横向柱状图 替换R基础barplot代码

ggplot2 实现分组水平柱状图方案

你当前使用的是宽格式表结构,ggplot2 绘制分组柱状图需要先转换为长格式,以下是完整可直接运行的实现代码:

第一步:加载依赖包

如果你已经安装过tidyverse包可以直接加载,没有的话先运行install.packages("tidyverse")安装即可:

library(tidyverse)

第二步:转换数据结构

将现有宽表数据转为ggplot2适用的长格式:

# 转换为长格式
data_long <- data %>%
  pivot_longer(
    cols = -Accounts, # 排除Accounts列,其余列都转为长格式
    names_to = "指标类型", # 存储原来的列名(Income/Expense/Benefit)的新列名
    values_to = "金额" # 存储对应数值的新列名
  )

# 确保金额列是数值格式,兼容原始数据为字符串的场景
data_long$金额 <- as.numeric(data_long$金额)

第三步:绘制分组水平柱状图

绘图逻辑和你原基础绘图效果完全对齐,还可以根据需要调整配色、主题风格匹配现有图表:

ggplot(data_long, aes(x = Accounts, y = 金额, fill = 指标类型)) +
  # position_dodge设置同组柱子并列显示,宽度可自行调整
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  # 翻转坐标轴变为水平柱状图,和原基础绘图效果一致
  coord_flip() +
  # 自定义配色,这里用rainbow和你原代码配色对齐,也可以替换成其他配色方案
  scale_fill_manual(values = rainbow(length(unique(data_long$指标类型)))) +
  # 调整主题,让轴标签水平显示,和你原代码的las=1效果一致
  theme_bw() +
  theme(
    axis.text.y = element_text(hjust = 1),
    legend.position = "top" # 图例位置可自行调整,可选right/bottom等
  ) +
  # 可选:自定义轴标题和图表标题
  labs(
    x = "账户类型",
    y = "金额",
    fill = "指标类型"
  )

如果需要调整柱子宽度、配色、图例位置等,直接修改对应参数即可,最终输出的图表风格和其他ggplot2绘制的图表完全统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:18:00