[英]To rearrange the legends for each set of Patient number in R
我有 80 多个患者数据,在 200-300 天内分配给他们几乎 5-6 个类别。 所以每个病人有 300 天和每天的状态名称。 我想做一个堆叠条 plot。
问题:问题是 ggplot 按字母顺序对类别进行排序,如果患者 1 在第 5 天,类别是“医疗预约”并且同一类别在第 50 天重复,我想对它们进行排序,就像它在源中的一样, ggplot 不区分它,而是将所有内容合二为一。 我想在第 50 天和第 5 天通过“医疗预约”来 plot。
我计算了每个患者类别的频率。 这是我到目前为止所拥有的:
tibble: 72 x 3
Category `Patient Number` n
<fct> <chr> <int>
1 AD Patient 1 34
2 AD Patient 2 15
3 Admin delay Patient 2 30
4 CC Patient 2 20
5 CD Patient 1 52
6 CD Patient 2 88
7 CP Patient 1 52
8 CP10 Patient 1 1
9 CP11 Patient 1 1
10 CP12 Patient 1 1
我想将它们 plot 放入 x 轴上的柱状图它应该是 y 轴上的患者编号应该是 N(Count) 与相应的类别,它不应该被排序。 我有87个病人号码。
每天的患者和类别:
ggplot(data = df, aes(x = `Patient Number`, y = n, fill = as.factor(Category))) +
geom_bar(position = position_stack(reverse = TRUE), stat="identity", na.rm = FALSE) +
scale_fill_discrete(breaks = Category)
提前致谢。 如果有人能解决这个问题,我将不胜感激。
这是您@pieterbons 建议我的 plot 图像:
如果我正确理解了您问题的第一部分,您想要制作一个堆叠图表,显示患者在哪一天接受了哪种治疗。 这可以通过使用geom_tile()
来实现,它不会像geom_bar()
() 那样聚合每个类别的数据,因此您可以在 plot 中多次获得相同的类别,例如它发生在第 5 天和第 50 天。请参阅下面的一个小示例,其中患者“a”在第 1 天出现“AA”,在第 3 天再次出现:
library(dplyr)
library(ggplot2)
df <- data.frame(Patient = c("a","a","a","b","b","b"),
Day = c(1,2,3,1,2,3),
Category = c("AA", "AD", "AA", "CD", "AA", "AD"))
df %>%
ggplot(aes(x = Patient, y = Day)) +
geom_tile(aes(fill = Category))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.