【问题标题】:Adjusting order of stacked bars in ggplot2调整ggplot2中堆叠条的顺序
【发布时间】:2021-10-10 19:31:05
【问题描述】:

我无法弄清楚这一点,也没有找到类似的问题。我想显示一个条形图,其中 Y 轴是“受试者”,然后对于每个受试者,都有一个堆叠的条形图显示给药顺序。

[Subject, Mednum, Medname]
Subj A  Med0    MednameX
Subj B  Med0    MednameY
Subj B  Med1    MednameX
Subj B  Med2    MednameZ
Subj C  Med0    MednameP
Subj C  Med1    MednameX 

如果我使用这个:

ggplot(data, aes(x=Subject, y=Mednum,fill=Medname)) + geom_col() + coord_flip()

我明白了:

我不仅希望每个堆叠条具有相同的高度(我可以将另一列添加到值为 1 的数据集,以便所有内容的大小为 1),而且排序不正确 - 正如您在主题 B 中看到的那样,堆叠条(按 Mednum 排序)应为 MednameY --> MednameX --> MednameZ。

有人有解决办法吗?本质上,我想不是通过填充标签,而是通过附加(第四个)变量来排序堆叠条。

【问题讨论】:

    标签: r ggplot2 geom-bar


    【解决方案1】:

    也许这就是您正在寻找的。如果我说对了,您可以通过切换到 geom_tile 来达到您想要的结果:

    library(ggplot2)
    
    ggplot(data, aes(y = Subject, x = Mednum, fill = Medname)) +
      geom_tile()
    

    数据

    data <- structure(list(Subject = c(
      "Subj A", "Subj B", "Subj B", "Subj B",
      "Subj C", "Subj C"
    ), Mednum = c(
      "Med0", "Med0", "Med1", "Med2",
      "Med0", "Med1"
    ), Medname = c(
      "MednameX", "MednameY", "MednameX",
      "MednameZ", "MednameP", "MednameX"
    )), row.names = c(NA, -6L), class = "data.frame")
    

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      相关资源
      最近更新 更多