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

如何在ggplot中合并两个连续变量与一个离散变量生成并列柱状图

并列柱状图实现方案

该需求完全可以实现,仅需对原始数据做格式转换后,调用ggplot的分组排布参数即可完成绘制,具体步骤如下:

1. 依赖包加载

需用到ggplot2绘图包与tidyr数据处理包,加载代码:

library(ggplot2)
library(tidyr)

2. 原始数据准备(你已有的数据代码)

foo <- c(5,17,31,9,17,10,30)
bar <- c(28,16,29,14,34,6,18)
day <- c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Suday")
df <- data.frame(foo, bar, day)

3. 数据格式转换

ggplot绘制分组柱状图需要长格式数据,将原来分散在两列的foo、bar数值整合为单列,同时新增分组标识列:

df_long <- pivot_longer(df, 
                        cols = c(foo, bar), # 指定要整合的列
                        names_to = "group", # 存储分组名(foo/bar)的列名
                        values_to = "value") # 存储对应数值的列名

4. 绘制并列柱状图

通过fill参数指定分组映射,position = "dodge"设置同组柱子并列排布:

ggplot(df_long, aes(x = day, y = value, fill = group)) +
  geom_col(position = position_dodge()) + # position参数控制并列排布
  coord_flip()

关键说明

  • 可调整position_dodge(width = 数值)的参数控制同组两个柱子的间距
  • 可通过scale_fill_manual(values = c("foo" = "颜色1", "bar" = "颜色2"))自定义两个系列的填充色
  • 绘制出的图表会自动生成分组图例,可通过labs(fill = "系列名")修改图例标题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:18:05