You need to enable JavaScript to run this app. R使用ggplot2实现成对变量合并绘制并排对比柱状图的方法
优惠活动
大模型
产品
解决方案
定价
更多

R使用ggplot2实现成对变量合并绘制并排对比柱状图的方法

ggplot2实现种族死亡数据成对并排对比图

1. 依赖加载与数据整理

首先需要加载tidyverse套件(包含dplyr、tidyr、ggplot2核心工具),随后将你提供的宽格式原始数据转换为ggplot2适配的长结构,同时拆分种族与指标字段:

# 加载依赖包
library(tidyverse)

# 构造你的输入数据(实际使用时替换为你自己的读入数据代码即可)
raw_df <- data.frame(
  Race = c("AIAN_Deaths", "AIAN_Expected", "Asian_Deaths", "Asian_Expected"),
  Alabama = c(127, 0, 88, 58),
  Alaska = c(1763, 444, 40, 52),
  Arizona = c(46, 1178, 353, 258),
  Arkansas = c(620, 122, 46, 71)
)

# 数据清洗转换
clean_df <- raw_df %>%
  # 拆分Race列,单独提取种族、指标两个维度
  separate(Race, into = c("种族", "指标"), sep = "_") %>%
  # 将州维度从列转为行,适配ggplot2长数据要求
  pivot_longer(cols = -c(种族, 指标), names_to = "州", values_to = "人数")

2. 绘制并排对比图

通过position_dodge实现同维度柱子并排展示,自定义颜色匹配你要求的死亡数(红色)、预期数(蓝色),用分面实现按种族分组:

ggplot(clean_df, aes(x = 州, y = 人数, fill = 指标)) +
  # 并排柱状图,调整dodge宽度控制同组柱子间距
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  # 自定义填充色:Deaths为红色,Expected为蓝色
  scale_fill_manual(values = c("Deaths" = "#ff0000", "Expected" = "#0000ff")) +
  # 按种族分面,实现分组展示效果
  facet_wrap(~种族) +
  # 基础主题调整,可按需修改
  theme_bw(base_size = 12) +
  labs(x = "州", y = "人数", fill = "指标类型")

如果不需要分面,希望所有种族的对比放在同一坐标轴下,可将x轴修改为x = interaction(种族, 州),再适当调整x轴标签旋转角度即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:24:05