我要做的是创建一个"躲避"使用来自两个不同数据帧的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与其他仅使用单个数据帧的图表保持一致。
答案 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;对于圆值)。