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

如何使用ggplot将所有变量展示在同一张图表中?

解决方法:用ggplot展示所有变量的分组柱状图

你的数据是宽格式,但ggplot绘制多系列图表需要长格式数据——你之前的代码里用到的values列在原数据中不存在,这就是代码跑不通的原因。按以下步骤操作即可:

1. 先把宽格式转成适合ggplot的长格式

用tidyr::pivot_longer函数把除name外的所有列转换为「变量名-数值」的键值对:

library(tidyverse)

# 转换数据格式
long_data <- Results_Case2_Annuity %>%
  pivot_longer(cols = -name,  # 除了name列之外的所有列
               names_to = "variable",  # 新列:存储原列名(比如NPV、Cost_Household)
               values_to = "values")   # 新列:存储对应数值

转换后的长格式数据结构示例:

name   variable        values
  <chr>  <chr>           <dbl>
1 11kWp  NPV             15746.
2 11kWp  Cost_Household   1932.
3 11kWp  Cost_Plant      13865.
4 9kWp   NPV             13640.
...

2. 用ggplot绘制分组柱状图

基于转换后的长数据,就可以画出每个name对应的所有变量的并列柱状图了:

ggplot(long_data, aes(x = name, y = values, fill = variable)) +
  geom_col(position = "dodge", width = 0.7) +  # dodge实现柱子并列,width调整柱子宽度
  labs(title = "各类型变量对比",
       x = "装机容量",
       y = "数值",
       fill = "变量类型") +
  theme_minimal()

关键说明:

  • fill = variable:用不同颜色区分NPV、家庭成本、电站成本这些变量
  • position = "dodge":让同一装机容量下的不同变量柱子并列显示,而非堆叠
  • 可根据需求自行调整标题、坐标轴标签和主题样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:05:19