我有一个双方正值的条形图。当我改变条的宽度时,它们之间的空间变大,看起来不太好。我试图用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))
答案 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)
结果:
请注意,我还删除了绘图代码的scale_x_continuous(breaks=c(.05,.25,.5,.75,.95))
部分,因为在将Q
视为因子变量时会出错。