带有两个数据帧的ggplot条形图

时间:2014-07-15 23:41:00

标签: r ggplot2

我要做的是创建一个"躲避"使用来自两个不同数据帧的gglot的条形图

不幸的是geom_bar没有看到之前添加的数据,所以它将它绘制在正确的顶部,我尝试过使用位置和宽度,但它似乎没有改变任何可能由于每个类别只有一个栏。

下面的代码会创建数据错误地绘制数据(条形图彼此重叠),然后使用将数据框绑定在一起的解决方法正确绘制它。

library("ggplot2")

x<-data.frame(dat=rep(seq(1,4),3),let=rep("X"))
y<-data.frame(dat=rep(seq(1,4),4),let=rep("y"))

xy<-rbind(x,y)

#what I would like to use with two different data frames
ggplot(NULL,aes(dat))+
  geom_bar(data=y,fill="red",width=0.1,position = "dodge")+
  geom_bar(data=x,fill="blue",width=0.1,position = "dodge")

#what I would like to see only without binding dfs
ggplot(xy,aes(dat,fill=let))+geom_bar(position="dodge")

我使用ggplot与其他仅使用单个数据帧的图表保持一致。

1 个答案:

答案 0 :(得分:6)

ggplot(mapping=aes(x=dat))+
  geom_bar(data=y, aes(x=dat-0.1), fill="red", binwidth=0.1)+
  geom_bar(data=x, fill="blue", binwidth=0.1)

这里的关键是您将数据移动的数量与binwidth相同,binwidth小于组之间的间距。在移位后对数据进行分箱,这样就会影响数据出现在哪个bin中。另外,如果没有明确设置binwidth,则分箱的宽度取决于绘图的范围(这就是它变化的原因)当xlim变化和工作时#34;很好地&#34;对于圆值)。

enter image description here