如何在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
相关产品推荐
相关产品推荐

