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

如何基于x轴创建二元变量的镜像可视化(ggplot实现)

2022参议院席位概率镜像柱状图实现方案

针对你想要将单一柱状图改为x轴两侧镜像柱形的需求,这里提供两种实现方式,核心是利用正负数值让两党概率分别落在坐标轴的正负区间,形成镜像效果:

方案1:纵向镜像(y轴正负区间)

这种方式保留你原代码的x轴为席位数量,民主党概率在y轴正方向,共和党概率在y轴负方向,形成上下镜像:

library(tidyverse)

# 预处理数据:给共和党概率取负值,用于镜像展示
senate2022 <- senate2022 %>%
  mutate(
    seatprob_Rparty_neg = -seatprob_Rparty,
    outcome = ifelse(seatprob_Dparty > seatprob_Rparty, "blue", "red")
  )

# 绘制镜像柱状图
mirror_plot <- senate2022 %>%
  ggplot() +
  # 绘制民主党概率柱形(正方向)
  geom_col(aes(x = seatsheld, y = seatprob_Dparty, fill = "民主党"), alpha = 0.7) +
  # 绘制共和党概率柱形(负方向,镜像)
  geom_col(aes(x = seatsheld, y = seatprob_Rparty_neg, fill = "共和党"), alpha = 0.7) +
  # 添加多数席位参考线
  geom_vline(xintercept = 50, linetype = "dashed", color = "gray50") +
  # 调整y轴:将负标签转为正数值,符合概率的阅读习惯
  scale_y_continuous(
    breaks = seq(-100, 100, 25),
    labels = abs(seq(-100, 100, 25)),
    name = "获胜概率 (%)"
  ) +
  # 设置党派对应颜色
  scale_fill_manual(values = c("民主党" = "blue", "共和党" = "red")) +
  # 图表标签与主题调整
  labs(
    x = "参议院席位数量",
    title = "2022年参议院席位获胜概率镜像图",
    fill = "党派"
  ) +
  theme_minimal()

mirror_plot

方案2:横向镜像(x轴正负区间)

如果希望镜像效果在x轴左右两侧展示(y轴为席位数量),可以用以下代码:

# 横向镜像版本
mirror_plot_horizontal <- senate2022 %>%
  ggplot() +
  # 民主党概率柱形(x轴正方向)
  geom_col(aes(x = seatprob_Dparty, y = seatsheld, fill = "民主党"), alpha = 0.7, orientation = "y") +
  # 共和党概率柱形(x轴负方向,镜像)
  geom_col(aes(x = -seatprob_Rparty, y = seatsheld, fill = "共和党"), alpha = 0.7, orientation = "y") +
  # 多数席位参考线
  geom_hline(yintercept = 50, linetype = "dashed", color = "gray50") +
  # 调整x轴标签为正数值
  scale_x_continuous(
    breaks = seq(-100, 100, 25),
    labels = abs(seq(-100, 100, 25)),
    name = "获胜概率 (%)"
  ) +
  scale_fill_manual(values = c("民主党" = "blue", "共和党" = "red")) +
  labs(
    y = "参议院席位数量",
    title = "2022年参议院席位获胜概率横向镜像图",
    fill = "党派"
  ) +
  theme_minimal()

mirror_plot_horizontal

关键说明

  • 核心逻辑是通过取负值将其中一组数据映射到坐标轴的负区间,和正区间的另一组形成镜像
  • 调整坐标轴标签时用abs()将负数值转为正,避免概率显示为负数的困惑
  • 保留了你原代码中50席位的参考线,明确参议院多数席位的分界线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:25:23