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

如何使用ggplot绘制患者收入、转诊与预约等待时长区间图

你要的这类区间展示图用ggplot2的geom_linerange即可实现,以下是完整可运行代码:

# 加载依赖包
library(ggplot2)

# 模拟数据(和你提供的代码一致)
set.seed(1)
income<-sort(rep(seq(10,105,5),20))
referral<-runif(400,10,20)+income
appointment<-referral+runif(400,10,20)+income

df<-data.frame(cbind(income,referral,appointment))
df<-df[order(df$income,df$referral),]

# 数据预处理:生成同收入组内的个体序号,用于避免线段重叠
df$group_id <- ave(1:nrow(df), df$income, FUN = seq_along)

# 绘图代码
ggplot(df, aes(x = income + (group_id - median(group_id)) * 0.15)) +
  # 绘制转诊到预约的等待时长区间线段
  geom_linerange(aes(ymin = referral, ymax = appointment), 
                 color = "gray30", size = 0.25, alpha = 0.8) +
  # 可选:添加两端点标记,红色为转诊等待时长,蓝色为预约等待时长
  geom_point(aes(y = referral), color = "#d92121", size = 0.7) +
  geom_point(aes(y = appointment), color = "#2161d9", size = 0.7) +
  # 坐标轴与主题设置
  scale_x_continuous(name = "收入", breaks = seq(10, 105, 5)) +
  ylab("等待时长") +
  ggtitle("不同收入患者转诊至首次预约等待时长分布") +
  theme_bw(base_size = 12)

说明:代码里给同收入组的个体加了微小的x轴偏移,避免同一收入水平的线段完全重叠影响可读性,如果不需要偏移,直接把x参数设置为income,删掉偏移计算逻辑即可。你提到的这类图确实常被称为高低图,非常适合展示同一个体两个关联指标的差值区间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:39:02