如何调整ggplot2堆叠条形图的堆叠顺序为DIC-POC-DOC?
修改ggplot堆叠条形图的堆叠顺序
要把堆叠顺序从DIC-DOC-POC改成DIC-POC-DOC,关键是手动指定Type列的因子水平顺序——ggplot的堆叠顺序是跟着因子水平走的,默认按字母排序,所以我们要手动调整。另外注意你代码里数据框名写错了,应该是df而非dat,修正后的完整代码如下:
df <- read.table(header=T, sep=" ", text=" ID Date Type Value A-1 2017-08-31 DIC 26.870107 A-2 2017-08-31 DIC 54.216603 A-3 2017-08-31 DIC 18.487286 A-1 2017-08-31 DOC 51.897025 A-2 2017-08-31 DOC 33.599756 A-3 2017-08-31 DOC 78.904307 A-1 2017-08-31 POC 21.232867 A-2 2017-08-31 POC 12.183641 A-3 2017-08-31 POC 2.60840") # 手动指定Type的因子水平顺序,匹配目标堆叠顺序 df$Type <- factor(df$Type, levels = c("DIC", "POC", "DOC")) ggplot(df, aes(y=Value, x=ID, fill=Type)) + geom_bar(position='stack', stat='identity')
原理说明:
- ggplot绘制堆叠条形图时,
fill变量的因子水平顺序直接决定堆叠层级,默认按字母排序(DOC < DIC < POC),所以手动把水平顺序改成c("DIC", "POC", "DOC")后,堆叠时就会从上到下呈现你想要的DIC-POC-DOC顺序。 - 调整后图例的顺序也会和堆叠顺序保持一致,不需要额外设置。
内容的提问来源于stack exchange,提问作者Sandra
相关产品推荐
相关产品推荐

