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

R语言创建分组条形图失败求助:堆叠图不符合需求

解决R语言ggplot分组条形图问题

你的代码问题在于数据是宽格式,且重复调用geom_bar并使用position="stack",这自然会生成堆叠图。要做分组条形图,核心是把数据转成长格式,并使用position="dodge"参数。

步骤1:转换数据为长格式

ggplot2对长格式数据的兼容性更好,用tidyr包的pivot_longer函数转换:

# 加载必要的包
library(ggplot2)
library(tidyr)

# 将宽格式数据转为长格式
PV_cluster1_long <- PV_cluster1 %>%
  pivot_longer(
    cols = c(MSFT, ATVI, AMOT),  # 指定需要转换的股票列
    names_to = "Stock",          # 生成存储股票名称的新列
    values_to = "Price_Variance" # 生成存储价格方差的新列
  )

步骤2:绘制分组条形图

用转换后的长数据绘图,仅需一次geom_bar,设置position="dodge"实现分组效果:

ggplot(PV_cluster1_long, aes(x = Years, y = Price_Variance, fill = Stock)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.9)) + # position_dodge控制分组条形的间距
  scale_y_continuous(breaks = c(-20, 0, 20, 40, 60, 80, 100)) +
  theme_bw() +
  labs(
    title = "Cluster 1 stocks",
    subtitle = "MSFT, ATVI, AMOT",
    fill = "Stocks", # 若想用边框区分,可将fill改为color,同时添加fill="white"设置条形内部填充色
    y = "Price Variance"
  )

关键说明

  • 原代码多次调用geom_bar属于冗余操作,ggplot会根据映射自动处理分组,无需手动拆分绘制。
  • position_dodge(width=0.9)的宽度值可按需调整,让分组条形的间距更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:21:48