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

如何在同一条形图中绘制三个变量的CFS评分占比?

绘制多变量并列CFS评分占比条形图解决方案

要实现三个变量的并列占比条形图,核心是先把宽格式数据转换为ggplot更易处理的长格式,再通过position="dodge"实现并列效果。以下是具体步骤:

1. 数据格式转换

假设你的三个目标变量为cfs_triage、triage_a、triage_b(替换为实际列名),用tidyr包将宽数据转为长格式:

# 加载依赖包
library(ggplot2)
library(tidyr)

# 转换为长格式
df_long <- df %>%
  pivot_longer(
    cols = c(cfs_triage, triage_a, triage_b),  # 指定需要合并的三个变量列
    names_to = "变量名称",
    values_to = "CFS评分"
  )

2. 绘制并列占比条形图

根据需求选择以下两种占比计算方式:

方式一:各变量内的分类占比(单变量下总和为100%)

ggplot(df_long, aes(x = 变量名称, y = ..prop.., fill = CFS评分, group = 变量名称)) +
  geom_bar(position = "dodge", stat = "count") +
  scale_y_continuous(labels = scales::percent_format()) +  # 显示百分比
  labs(x = "", y = "占比", fill = "CFS评分") +
  theme_minimal()

方式二:整体数据中的占比(所有条形总和为100%)

保持和你单变量绘图时一致的整体占比逻辑:

ggplot(df_long, aes(x = 变量名称, y = ..count../sum(..count..), fill = CFS评分)) +
  geom_bar(position = "dodge", stat = "count") +
  scale_y_continuous(labels = scales::percent_format()) +
  labs(x = "", y = "整体占比", fill = "CFS评分") +
  theme_minimal()

关键说明

  • position="dodge":强制条形并列展示,而非默认的堆叠效果。
  • 长格式转换:让ggplot能统一识别分组变量,是多变量并列绘图的前提。
  • scales::percent_format():将小数转为百分比,提升图表可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:45:44