调整ggplot2中堆叠条的顺序
Posted
技术标签:
【中文标题】调整ggplot2中堆叠条的顺序【英文标题】:Adjusting order of stacked bars in 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。
有人有解决办法吗?本质上,我想不是通过填充标签,而是通过附加(第四个)变量来排序堆叠条。
【问题讨论】:
【参考方案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")
【讨论】:
以上是关于调整ggplot2中堆叠条的顺序的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化:ggplot2可视化水平堆叠条形图并且在每个堆叠条形图的内部居中添加百分比文本标签信息