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

