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

如何在R语言中绘制按地区分组、指定轴的三列数据条形图?

在R语言中绘制指定分组条形图的实现方法

步骤1:整理数据

先把你提供的图片数据转换成R可处理的数据框格式。如果数据是宽格式(每个地区单独列为一列),需要先转成长格式;如果已经是长格式(每行对应「学位-地区-收入」的组合),可直接使用。

模拟长格式数据(匹配你图片中的内容)

df <- data.frame(
  Degree = rep(c("本科", "硕士", "博士"), each = 3),
  region = rep(c("东部", "中部", "西部"), 3),
  income = c(8000, 6500, 5800, 12000, 9500, 8200, 18000, 14000, 12500)
)

宽格式转长格式(若你的原始数据是宽格式)

假设宽格式数据如下:

df_wide <- data.frame(
  Degree = c("本科", "硕士", "博士"),
  东部 = c(8000, 12000, 18000),
  中部 = c(6500, 9500, 14000),
  西部 = c(5800, 8200, 12500)
)

使用tidyr包转换:

# 安装并加载tidyr(未安装时执行)
install.packages("tidyr")
library(tidyr)

df_long <- df_wide %>%
  pivot_longer(cols = -Degree, names_to = "region", values_to = "income")

步骤2:用ggplot2绘制分组条形图

使用ggplot2实现你要的「X轴为收入、Y轴为学位、按地区分组」的条形图:

# 安装并加载ggplot2(未安装时执行)
install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = income, y = Degree, fill = region)) +
  geom_bar(stat = "identity", position = position_dodge2(reverse = TRUE)) +
  labs(
    title = "不同学位与地区的收入对比",
    x = "收入",
    y = "学位",
    fill = "地区"
  ) +
  theme_minimal()

关键代码说明

  • aes(x = income, y = Degree, fill = region):指定X轴为收入、Y轴为学位,用填充颜色区分不同地区
  • geom_bar(stat = "identity"):因为我们用的是实际收入数值而非计数,所以设置stat="identity"
  • position = position_dodge2(reverse = TRUE):实现同一学位下不同地区条形的分组排列,reverse=TRUE用于调整条形顺序更直观
  • labs():自定义图表标题、轴标签和图例名称
  • theme_minimal():使用简洁的主题样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:05:10