2

我有一个两边都有正值的条形图。当我更改条的宽度时,它们之间的空间变得很大并且看起来不太好。我试图用 来操纵它position = position_dodge,但它不起作用。我怎样才能减少酒吧之间的空间?

这是包含我的数据的代码(最初发布在这里Stacked barplot cross 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))
4

1 回答 1

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)

结果:

在此处输入图像描述

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

于 2014-03-31T09:37:19.533 回答