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

如何使用ggplot绘制以地区为X轴、按年份分组的柱状图?

绘制分组柱状图需求

我有如下数据框:

District `2011` `2016` `2021`
  <chr>     <dbl>  <dbl>  <dbl>
1 YTM       44045  49046  44458
2 KC        37660  41802  40994

df <- tibble(District = c("YTM", "KC"),
       `2011` = c(44045, 37660),
       `2016` = c(49046, 41802),
       `2021` = c(44458, 40994))

想绘制一幅分组柱状图:以District为X轴,每个区域下按年份并列显示对应柱子,效果为同一区域的不同年份柱子紧挨排布的样式。

实现方法

要做出这种图,首先得把数据从宽格式转成长格式——ggplot2更适合处理长格式数据,具体步骤如下:

  1. 加载所需工具包
library(tidyverse) # 包含转格式用的tidyr和绘图用的ggplot2
  1. 转换数据格式
    把多列年份转为一个分类变量列,同时将对应数值整合到单列:
df_long <- df %>%
  pivot_longer(cols = -District, names_to = "Year", values_to = "Value")
  1. 绘制分组柱状图
ggplot(df_long, aes(x = District, y = Value, fill = Year)) +
  geom_col(position = position_dodge()) + # 该参数实现同一区域下柱子并列,而非堆叠
  labs(title = "各区域年度数值对比",
       x = "区域",
       y = "数值",
       fill = "年份") +
  theme_minimal()

关键说明:

  • pivot_longer:这是核心步骤,将原数据的宽格式转为ggplot可识别的长格式,为按年份分组绘图打下基础
  • position_dodge():如果省略该参数,柱子会默认堆叠,加上后就呈现出并列的分组效果
  • fill = Year:用不同颜色区分不同年份的柱子,让分组信息更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:15:41