如何更改geom_bar中栏之间的空格?

时间:2014-03-31 08:56:27

标签: r ggplot2 space geom-bar

我有一个双方正值的条形图。当我改变条的宽度时,它们之间的空间变大,看起来不太好。我试图用position = position_dodge操纵它,但它不起作用。如何减少条形之间的空间?

以下是我的数据代码(最初在此发布Stacked barplot crossing the x-axis):

Year <- factor(c("2003-2009","2003-2009","2003-2009","2003-2009","2003-2009","2009-2012",
              "2009-2012","2009-2012","2009-2012","2009-2012"))
Q <- c(.05,.25,.5,.75,.95)
Score <- c(6,6,4,3,1,23,20,19,24,32)
df <- data.frame(Year, Q, Score)

df <- transform(df, Score=ifelse(as.character(Year) %in% c("2003-2009"), -Score, Score))
df.split <- split(df, df$Score < 0)

ggplot() + 
  geom_bar(data=df.split[[1]],aes(x=Q, y=Score, fill=Year), stat="identity",width = 0.09)+
  geom_bar(data=df.split[[2]],aes(x=Q, y=Score, fill=Year), stat="identity",width = 0.09)+
  geom_hline(yintercept=0) +
  coord_flip()+
  scale_y_continuous(labels=abs,limits=c(-40,40))+ 
  theme_bw()+
  scale_x_continuous(breaks=c(.05,.25,.5,.75,.95))

1 个答案:

答案 0 :(得分:2)

Q变量视为一个因子会将条之间的空间设置为相等。通常,当您减少条形的width时,条形之间的间距会增加。但是,您需要窄条和条形之间的小空间。您可以通过更改已保存图像的height来实现此目的。

代码(我还更改了条形的width和y轴的比例):

ggplot() + 
  geom_bar(data=df.split[[1]],aes(x=as.factor(Q), y=Score, fill=Year), stat="identity", width = 0.4) +
  geom_bar(data=df.split[[2]],aes(x=as.factor(Q), y=Score, fill=Year), stat="identity", width = 0.4) +
  geom_hline(yintercept=0) +
  coord_flip() +
  scale_y_continuous(labels=abs,limits=c(-10,35)) + 
  theme_bw() +
  ggsave("myplot.png", width=8, height=2, dpi=300)

结果:

enter image description here

请注意,我还删除了绘图代码的scale_x_continuous(breaks=c(.05,.25,.5,.75,.95))部分,因为在将Q视为因子变量时会出错。