ggplot 等待推荐和等待约会

ggplot with wait to referral and wait to appointments

我有一个包含 350 名患者的数据库,包括他们的收入、他们等待转诊的时间以及他们等待预约的时间。这样模拟数据:

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),]

我想要一个图,x 轴是收入,每位患者一次观察,y 轴是一条线,从转诊时开始,到第一次预约时不时结束。我不知道这个情节叫什么(高低?)但我已经模拟了我希望它看起来像下面的样子。

谁能推荐一些 ggplot 代码来帮助我制作情节?谢谢

根据什么来着色?我假设收入。

df %>%
ggplot(aes(x=income,y=referral,color=(income),group = income))+
scale_color_gradient2(low = "darkred", mid = "red", high = "green")+
geom_line()

geom_segment()层很难躲避,因为它只会躲避两个x位置之一。相反,我建议在绘图之前计算正确的闪避。

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),]

# Calculate dodges
dodge_width <- 0.8
df$dodge <- unlist(lapply(split(df$income, df$income), function(x) {
  seq(-0.5 * dodge_width, 0.5 * dodge_width, length.out = length(x))
}))

# Convert to pseudo-discrete position
df$position <- match(df$income, sort(unique(df$income)))

ggplot(df) +
  geom_segment(
    aes(x = position + dodge, xend = position + dodge, 
        y = referral, yend = appointment, group = seq_along(income),
        colour = income)) +
  scale_x_continuous(
    breaks = df$position[!duplicated(df$position)],
    labels = df$income[!duplicated(df$position)]
  ) +
  scale_colour_gradientn(
    colours = c("red", "yellow", "green")
  )

reprex package (v2.0.1)

于 2021-09-07 创建