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

如何用ggplot绘制显示公投赞成反对票的堆叠条形图?

解决堆叠条形图绘制问题

首先你需要把数据整理成ggplot偏好的长格式(tidy data),当前你的数据是宽格式,没法直接生成堆叠效果。按以下步骤修改:

  1. 创建完整数据框并转换为长格式
# 合并原始数据为数据框
measure_b_result <- data.frame(
  pre = c("Del Mar Heights","Rancho Penasquitos","La Jolla","Mira Mesa","Miramar"),
  yes_on_b = c(7533,16607,6243,10200,443),
  no_on_b = c(8477,20478,8406,10054,356)
)

# 转换为长格式(需要dplyr和tidyr包,未安装则先运行install.packages(c("dplyr","tidyr")))
library(dplyr)
library(tidyr)

measure_b_long <- measure_b_result %>%
  pivot_longer(cols = c(yes_on_b, no_on_b), 
               names_to = "vote_type", 
               values_to = "vote_count") %>%
  mutate(vote_type = factor(vote_type, levels = c("yes_on_b", "no_on_b"), labels = c("赞成", "反对")))
  1. 绘制堆叠条形图
library(ggplot2)

ggplot(measure_b_long, aes(x = pre, y = vote_count, fill = vote_type)) +
  geom_bar(stat = "identity") +
  labs(title = "各区域公投提案票数分布",
       x = "区域",
       y = "票数",
       fill = "投票倾向") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签避免重叠

关键说明

  • 宽格式转长格式是堆叠图的核心操作,pivot_longer把原本独立的赞成/反对列合并为类别列(vote_type)和数值列(vote_count)
  • fill = vote_type指定按投票类别区分颜色,自动生成堆叠效果
  • 最后的theme设置是优化x轴区域名的显示,避免长名称重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:45:42