【问题标题】:How can I plot bars that are stacked on top of one another in ggplot?如何在ggplot中绘制彼此堆叠的条形图?
【发布时间】:2018-01-22 23:08:14
【问题描述】:

我想用这个数据框制作一个条形图:

library(ggplot2)
mydf=data.frame(c("A","B","C","D"),c(100,110,90,120),c(150,200,160,180))
names(mydf)=c("myfirstC","mysecondC","mythirdC")

为了绘制一个条形图,条形图相互堆叠,我尝试使用以下代码:

ggplot(data=mydf, aes(x=myfirstC))+
    geom_col(aes(y=mysecondC), colour="blue")+
    geom_col(aes(y=mythirdC), colour="red")
head(mydf)

不幸的是,此代码仅返回带有“mythirdC”列的条形图。

问题:我需要如何更改代码才能获得堆叠图, 不重塑数据框?

【问题讨论】:

  • 应该是gather(mydf, var, val, mysecondC:mythirdC) %>% ggplot(., aes(x = myfirstC, y = val, fill = var)) + geom_bar(stat = 'identity')
  • 我相信您的建议是您实际应该这样做的方式。但我还不太明白:为什么会这样?
  • 这可能是由于一致性,如果有很多列,那么使用 reshape 方法会变得更容易

标签: r ggplot2


【解决方案1】:

如果你真的不想重塑你可以试试这个:

ggplot(data=mydf, aes(x=myfirstC))+
   geom_col(aes(y=mysecondC+mythirdC), fill="blue")+
   geom_col(aes(y=mythirdC), fill="red")

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 2018-03-17
    • 1970-01-01
    • 2015-08-11
    • 2011-10-14
    • 2022-11-23
    • 2021-11-16
    • 2017-08-14
    • 2013-03-03
    相关资源
    最近更新 更多