【发布时间】: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 方法会变得更容易