【发布时间】:2018-12-03 10:52:17
【问题描述】:
我有一个关于使用 R 中的 GGplot 在游泳者图中对堆叠条进行排序的问题。
我有一个接受治疗的(人工)患者的样本数据集。
library(tidyverse)
df <- read.table(text="patient start_t_1 t_1_duration start_t_2 t_2_duration start_t_3 t_3_duration start_t_4 t_4_duration end
1 0 1.5 1.5 3 NA NA 4.5 10 10
2 0 2 4.5 2 NA NA 2 2.5 10
3 0 5 5 2 7 0.5 7.5 2 9.5
4 0 8 NA NA NA NA 8 2 10", header=TRUE)
所有患者在时间 = 0 开始第一次治疗。随后,患者接受不同的治疗(编号 t_2 到 t_4)。
我尝试使用以下代码绘制游泳者图:
df %>%
gather(variable, value, c(t_1_duration, t_2_duration, t_3_duration, t_4_duration)) %>%
ggplot(aes(x = patient, y = value, fill = variable)) +
geom_bar(stat = "identity") +
coord_flip()
但是,治疗没有按正确的顺序显示。 例如:患者 3 依次接受所有治疗,而患者 2 先接受治疗 1,然后接受治疗 4,最后接受治疗 2。 所以,简单地颠倒顺序是行不通的。
如何按时间顺序排列堆叠的条形?
【问题讨论】: