繁体   English   中英

重新排列 R 中每组患者编号的图例

[英]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 图像:

@pieterbons 的灵魂

如果我正确理解了您问题的第一部分,您想要制作一个堆叠图表,显示患者在哪一天接受了哪种治疗。 这可以通过使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM