如何增加ggplot2中条形图中的条形图之间的空间?

如何增加ggplot2中条形图中的条形图之间的空间?

您可以随时使用width参数,如下所示:

 df <- data.frame(x=factor(LETTERS[1:4]), y=sample(1:100, 4)) library(ggplot2) ggplot(data=df, aes(x=x, y=y, width=.5)) + geom_bar(stat="identity", position="identity") + opts(title="width = .5") + labs(x="", y="") + theme_bw() 

与以下width其他设置进行比较:

替代文字

到现在为止还挺好。 现在,假设我们有两个因素。 如果你想玩均匀间隔并列的条(比如当在barplot()使用spacebarplot() beside=TRUE时),使用geom_bar(position="dodge")不是那么容易:你可以改变条宽,但不能在相邻的栏之间添加空格(并且我没有在Google上find方便的解决scheme)。 我结束了这样的事情:

 df <- data.frame(g=gl(2, 1, labels=letters[1:2]), y=sample(1:100, 4)) x.seq <- c(1,2,4,5) ggplot(data=transform(df, x=x.seq), aes(x=x, y=y, width=.85)) + geom_bar(stat="identity", aes(fill=g)) + labs(x="", y="") + scale_x_discrete(breaks = NA) + geom_text(aes(x=c(sum(x.seq[1:2])/2, sum(x.seq[3:4])/2), y=0, label=c("X","Y")), vjust=1.2, size=8) 

用于$ x $ -axis的vector是在data.frame中“注入”的,所以如果你想改变外部间距,而width允许控制内部间距。 $ x $ scale_x_discrete()标签可以通过使用scale_x_discrete()来增强。

替代文字

用于因子栏之间的空间使用

 ggplot(data = d, aes(x=X, y=Y, fill=F)) + geom_bar(width = 0.8, position = position_dodge(width = 0.9)) 

geom_bar中的宽度控制相对于x轴的栏宽度,而position_dodge中的宽度控制同样相对于x轴给出的两个栏的宽度。 玩弄宽度来find你喜欢的一个。

非常感谢你。 我有同样的问题,你帮我解决这个问题。 而不是使用geom_text来添加我使用scale_x_continuous的X标签(见下文)

 geom_text(aes(x=c(sum(x.seq[1:2])/2, sum(x.seq[3:4])/2), y=0, label=c("X","Y")), vjust=1.2, size=8) 

取而代之

 scale_x_continuous(breaks=c(mean(x.seq[1:2]), mean(x.seq[3:4])), labels=c("X", "Y")) 

对于POSIXlt条之间的空间,您需要从一天中的秒数中调整宽度

 # POSIXlt example: full & half width d <- data.frame(dates = strptime(paste(2016, "01", 1:10, sep = "-"), "%Y-%m-%d"), values = 1:10) ggplot(d, aes(dates, values)) + geom_bar(stat = "identity", width = 60*60*24) ggplot(d, aes(dates, values)) + geom_bar(stat = "identity", width = 60*60*24*0.5)