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

在ggplot2中按年份绘制缓解人群比例的图表实现问题

绘制每年缓解人群比例的ggplot2实现方案

问题描述

需要绘制治疗后每年处于缓解状态(二元变量0/1)人群的比例图,X轴为年份,Y轴为缓解比例,分别用geom_bar和geom_line实现。数据结构如下:

Client_idYearRemission
220160
420171
720170
820161
1220161

原代码尝试用geom_bar但结果错误,每年比例都显示为1.00:

ggplot(data=df)+
  geom_bar(aes(x=Year,y=Remission),stat="identity",position="dodge")

解决方案

原代码错误原因:stat="identity"会直接使用Remission的原始0/1值而非计算比例,需通过统计计算或数据预处理得到每年的缓解比例。

1. 使用geom_bar绘制比例柱状图

方法一:直接用stat_summary计算均值(0/1变量的均值即比例)

library(ggplot2)

ggplot(data = df) +
  geom_bar(aes(x = factor(Year), y = Remission), 
           stat = "summary", fun = "mean", 
           width = 0.6) + # 调整柱子宽度更美观
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) + # 显示百分比标签
  labs(x = "年份", y = "缓解人群比例")

方法二:先预处理数据再绘图(需dplyr包)

library(ggplot2)
library(dplyr)

# 计算每年缓解比例
df_summary <- df %>%
  group_by(Year) %>%
  summarise(Remission_rate = mean(Remission))

ggplot(data = df_summary) +
  geom_bar(aes(x = factor(Year), y = Remission_rate), 
           stat = "identity", 
           width = 0.6) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  labs(x = "年份", y = "缓解人群比例")

2. 使用geom_line绘制比例折线图

方法一:直接用stat_summary计算均值

library(ggplot2)

ggplot(data = df) +
  stat_summary(aes(x = Year, y = Remission), 
               fun = "mean", geom = "line", group = 1, linewidth = 1) + # group=1确保线连续
  stat_summary(aes(x = Year, y = Remission), 
               fun = "mean", geom = "point", size = 3) + # 添加数据点增强可读性
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  labs(x = "年份", y = "缓解人群比例")

方法二:用预处理后的数据绘图

library(ggplot2)
library(dplyr)

df_summary <- df %>%
  group_by(Year) %>%
  summarise(Remission_rate = mean(Remission))

ggplot(data = df_summary) +
  geom_line(aes(x = Year, y = Remission_rate), group = 1, linewidth = 1) +
  geom_point(aes(x = Year, y = Remission_rate), size = 3) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  labs(x = "年份", y = "缓解人群比例")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:45:33