#r #ggplot2 #plot #data-visualization
Вопрос:
Я пытаюсь создать страницу с несколькими сюжетами, чтобы сравнить несколько переменных внутри переменных болезни и статуса пациента (т. Е. умершего или выздоровевшего) с течением времени.
Вот мой код
p1 <- g geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = sofa_score, color = outcome, group = outcome)) scale_x_continuous(breaks = sofa_vivo_vs_mortos$days)
geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = resp_score, color = outcome, group = outcome)) values = c("blue", "red")) labs(x="Days after admission")
p2 <- g geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = sofa_score, color = outcome, group = outcome)) scale_x_continuous(breaks = sofa_vivo_vs_mortos$days)
geom_smooth(data = sofa_vivo_vs_mortos, aes(x = days, y = coag_score, color = outcome, group = outcome)) labs(x="Days after admission")
ggarrange(p1, p2, labels = c("A", "B"), ncol = 2)
Что дает следующий сюжет:
Поскольку на графиках не различимо, какая переменная какая, я хотел бы, чтобы мой код выдавал:
1-Уникальное расположение легенды для всей страницы
2-цвет легенду для каждой переменной, основываясь не только на его группирующую переменную (в моем коде outcome
переменная), но также на имя переменной (т. е. один цвет Legend для sofa_score
переменной, в которой outcome = deceased
и для другой sofa_score
, в которой outcome = recovered
, совмещены в один и тот же участок в качестве второй переменной при анализе (то есть переменная resp_score
с таким же outcome
расслоением)
Аналогичный желаемый результат:
Отредактируйте данные для примера:
df2 <- data.frame(ID = seq(1,32, by=1), sofa_score = sample(1:8, 8, replace = TRUE), resp_score = sample(1:8, 8, replace = TRUE),
outcome = c('deceased', 'recovered'),
days = sample(1:20, 32, replace = TRUE), coag_score = sample(1:8, 8, replace = TRUE))
Комментарии:
1. Не могли бы вы сгенерировать некоторые фиктивные данные с теми же именами переменных и векторными классами, что и ваши реальные данные, чтобы мы могли с ними поиграть?
2. Спасибо, что ответили. Конечно. Я только что отредактировал сообщение с этим, и вот оно:
df2 <- data.frame(ID = seq(1,32, by=1), sofa_score = sample(1:8, 8, replace = TRUE), resp_score = sample(1:8, 8, replace = TRUE), outcome = c('deceased', 'recovered'), days = sample(1:20, 32, replace = TRUE), coag_score = sample(1:8, 8, replace = TRUE))
Ответ №1:
Я вообще нахожу, что пакет «пэчворк» отлично подходит для композиции сюжета, включая сбор легенд из нескольких сюжетов. Пример:
library(ggplot2)
library(patchwork)
set.seed(42)
df2 <- data.frame(
ID = seq(1,32, by=1),
sofa_score = sample(1:8, 8, replace = TRUE),
resp_score = sample(1:8, 8, replace = TRUE),
outcome = c('deceased', 'recovered'),
days = sample(1:20, 32, replace = TRUE),
coag_score = sample(1:8, 8, replace = TRUE)
)
p1 <- ggplot(df2, aes(days))
geom_smooth(aes(y = coag_score, colour = outcome, group = outcome))
scale_colour_manual(
values = c("tomato", "dodgerblue"),
name = "Coag Score"
)
p2 <- ggplot(df2, aes(days))
geom_smooth(aes(y = resp_score, colour = outcome, group = outcome))
scale_colour_manual(
values = c("limegreen", "orchid"),
name = "Resp Score"
)
p1 p2 plot_layout(guides = "collect")
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Создано 2021-03-17 пакетом reprex (v0.3.0)
Комментарии:
1. Спасибо вам за быстрый ответ. Точный график, который я ищу, — это тот, в котором вы можете объединить оба
Coag
графика иResp Score
графики в один с разными цветами для каждой строки, хотя бы потому, что я хочу сравнить две переменные в двух разных состояниях, т. Е. 4 разных строки.