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

如何在R的ggplot中绘制按采样日期分组的堆叠并排柱状图

解决方案:ggplot绘制按采样日期分组的堆叠并排柱状图

要实现同一监测站位下,不同采样日期的堆叠柱状图并排展示,核心是合并所有样本数据并添加日期标识,再通过ggplot的分组和位置调整参数实现需求。

步骤1:合并数据并添加采样日期标识

首先将三个独立的样本数据集合并到一个数据框中,同时添加一列用于区分采样日期:

# 假设三个数据集分别为 densegroupOct21(2021年10月)、densegroupApr22(2022年4月)、densegroupOct22(2022年10月)
densegroupOct21$sample_date <- "2021-10"
densegroupApr22$sample_date <- "2022-04"
densegroupOct22$sample_date <- "2022-10"

# 合并为单一数据框
all_data <- rbind(densegroupOct21, densegroupApr22, densegroupOct22)

步骤2:绘制堆叠并排柱状图

通过设置group = sample_date指定分组依据,配合position_dodge实现同一站位下不同日期的堆叠柱并排:

ggplot(all_data, aes(x = station, y = density, fill = group)) +
  scale_fill_brewer(palette = "Paired") +
  # 按采样日期分组,让同一站位下的不同日期堆叠柱并排
  geom_bar(stat = "identity", 
           position = position_dodge(width = 0.8), 
           aes(group = sample_date)) +
  labs(x = "Station", y = "Density", title = "Group Density by Station and Sampling Date") +
  # 调整x轴标签角度避免重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

优化:添加日期边框增强区分度

如果需要更清晰地分辨不同采样日期的堆叠柱,可以添加边框颜色:

ggplot(all_data, aes(x = station, y = density, fill = group)) +
  scale_fill_brewer(palette = "Paired") +
  geom_bar(stat = "identity", 
           position = position_dodge(width = 0.8), 
           aes(group = sample_date, color = sample_date),
           size = 0.5) +
  # 自定义边框颜色
  scale_color_manual(values = c("#2c3e50", "#7f8c8d", "#bdc3c7")) +
  labs(x = "Station", y = "Density", title = "Group Density by Station and Sampling Date") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

原理说明

  • 合并数据是基础:ggplot要求多组数据放在同一数据框中,通过分类变量(这里是sample_date)实现分组展示。
  • group = sample_date:告诉ggplot按采样日期对柱子进行分组,确保同一站位下的不同日期柱子独立排列。
  • position_dodge(width = 0.8):控制同一站位下不同日期柱子的横向间距,数值越大间距越宽。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:42