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

使用geom_bar将患者与临床医师配对分数合并至同一柱状图

解决方案

要实现你想要的分组柱状图,我们可以通过数据格式转换+频次统计+ggplot绘图来完成,完全契合你提到的dplyr和pivot_longer思路,具体步骤如下:

1. 加载必备工具包

先安装并加载需要的R包:

# 首次运行需安装包
install.packages(c("dplyr", "tidyr", "ggplot2"))

# 加载包
library(dplyr)
library(tidyr)
library(ggplot2)

2. 数据整理与频次统计

把原数据的宽格式转成长格式,同时统计每个评分下患者自评、医师评定的次数:

# 转换格式并统计频次
df_long <- df %>%
  pivot_longer(
    cols = c(Patient, Clinican),  # 指定要转换的两列
    names_to = "评定者",          # 新列:标记是患者还是医师
    values_to = "评分"            # 新列:存储1-8的分数
  ) %>%
  group_by(评定者, 评分) %>%
  summarise(人数 = n(), .groups = "drop")  # 统计每组的频次,关闭分组

3. 绘制分组柱状图

用ggplot生成对比柱状图,还原你想要的效果:

ggplot(df_long, aes(x = factor(评分), y = 人数, fill = 评定者)) +
  geom_bar(stat = "identity", position = position_dodge(0.8), width = 0.7) +  # 分组并排柱状
  scale_fill_manual(values = c("Patient" = "#4285F4", "Clinican" = "#EA4335")) +  # 自定义颜色
  labs(
    x = "评分(1=病情控制良好,8=晚期病危)",
    y = "人数",
    title = "患者自评 vs 医师评定评分分布",
    fill = "评定类型"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))  # 标题居中

运行以上代码后,就能得到和目标图结构一致的分组柱状图,清晰对比不同评分下患者与医师的评定频次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:10:30