#r #ggplot2 #line-plot
Вопрос:
У меня есть база данных из 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, который поможет мне создать мой сюжет? Спасибо.
Ответ №1:
От 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")
)
Создано 2021-09-07 пакетом reprex (v2.0.1)
Ответ №2:
в соответствии с чем должна быть выполнена раскраска ? Я предполагал доход.
df %>%
ggplot(aes(x=income,y=referral,color=(income),group = income))
scale_color_gradient2(low = "darkred", mid = "red", high = "green")
geom_line()
Комментарии:
1. Спасибо. Цвет — по доходу. Как используется время встречи в вашем решении? Если используется назначение, то каждая строка будет переменной по длине. Также я ожидал 400 строк.