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

如何用R语言ggplot绘制血压分组生存占比百分比直方图

用R的ggplot绘制血压分组生存情况图表

步骤1:加载必备工具包

先装tidyverse包(第一次用才需要运行安装代码),它包含数据处理的dplyr和绘图的ggplot2,新手一次加载就能搞定大部分需求:

# 安装包(首次使用执行)
install.packages("tidyverse")
# 加载包
library(tidyverse)

步骤2:导入你的CSV数据

假设你的数据文件叫data.csv,放在当前工作目录里,用下面代码导入,顺便检查数据结构:

# 导入数据
df <- read_csv("data.csv")
# 查看变量类型,确认血压是数值型、survived是"是/否"格式
str(df)

注:如果survived存的是0/1,先转成"是/否":df$survived <- ifelse(df$survived == 1, "是", "否")

步骤3:给血压按10mmHg间隔分组

用cut()函数把连续血压切成10mmHg一段的组,自动适配你的数据范围:

# 生成10mmHg间隔的断点,比如从最低血压的整十数到最高血压的整十数
bp_breaks <- seq(from = floor(min(df$血压, na.rm = TRUE)/10)*10, 
                 to = ceiling(max(df$血压, na.rm = TRUE)/10)*10, 
                 by = 10)

# 新增分组变量`bp_group`,区间左闭右开(比如[60,70)表示60≤血压<70)
df <- df %>%
  mutate(bp_group = cut(血压, breaks = bp_breaks, include.lowest = TRUE, right = FALSE))

步骤4:统计各组的生存数据

用分组统计功能,算出每组总人数、生存人数、生存占比:

stats_df <- df %>%
  group_by(bp_group) %>%
  summarize(
    总人数 = n(),
    生存人数 = sum(survived == "是", na.rm = TRUE),
    生存占比 = 生存人数 / 总人数
  )

步骤5:用ggplot绘图

选项1:展示生存人数(柱状图)

ggplot(stats_df, aes(x = bp_group, y = 生存人数)) +
  geom_col(fill = "#2E86AB", width = 0.7) +  # 设置柱子颜色和宽度
  geom_text(aes(label = 生存人数), vjust = -0.5) +  # 在柱子上方标数值
  labs(
    x = "血压分组(mmHg)",
    y = "生存人数",
    title = "不同血压分组患者生存人数分布"
  ) +
  theme_bw() +  # 用简洁的白色主题
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # X轴标签旋转45度,避免重叠

选项2:展示生存占比(柱状图)

如果要展示占比,把Y轴换成生存占比,还能转成百分比格式:

ggplot(stats_df, aes(x = bp_group, y = 生存占比)) +
  geom_col(fill = "#F24C4C", width = 0.7) +
  geom_text(aes(label = sprintf("%.1f%%", 生存占比*100)), vjust = -0.5) +  # 显示百分比数值
  labs(
    x = "血压分组(mmHg)",
    y = "生存占比",
    title = "不同血压分组患者生存占比分布"
  ) +
  scale_y_continuous(labels = scales::percent) +  # Y轴显示百分比
  theme_bw() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

小提示

  • 数据有缺失值的话,na.rm = TRUE会自动忽略,避免统计出错
  • 血压分组的断点可以手动指定,比如bp_breaks = c(60,70,80,...,180),根据你的数据范围调整
  • 要是想同时展示生存和死亡人数的对比,可以做堆叠柱状图,需要的话可以再调整代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:56:09