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

时间:2011-01-13 00:26:45

标签: r ggplot2

如何在ggplot2

的条形图中增加条形之间的间距

4 个答案:

答案 0 :(得分:55)

您始终可以使用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的以下其他设置进行比较:

alt text

到目前为止,这么好。现在,假设我们有两个因素。如果您想要使用均匀分布的并置条(如在space中使用beside=TRUEbarplot()一起使用),使用geom_bar(position="dodge")并不是那么容易:您可以更改条宽,但不在相邻条之间添加空格(我在Google上找不到方便的解决方案)。我最终得到了类似的东西:

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的向量在data.frame中被“注入”,因此您可以根据需要更改外部间距,而width允许控制内部间距。使用scale_x_discrete()可以增强$ x $ -axis的标签。

alt text

答案 1 :(得分:37)

对于因子栏之间的空格,请使用

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轴的空间宽度。玩弄宽度,找到你喜欢的宽度。

答案 2 :(得分:1)

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

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")) 

答案 3 :(得分:1)

对于POSIXlt栏之间的空格,您需要根据一天中的秒数调整宽度

 Request:
 GET ******* HTTP/1.1
 Host: localhost:8081
 Connection: keep-alive
 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6)       AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
 Accept: */*
 Referer: http://localhost:8081/
 Accept-Encoding: gzip, deflate, sdch
 Accept-Language: en-US,en;q=0.8,fi;q=0.6
 Cookie: XSRF-TOKEN=******; JSESSIONID=*******

 Response:
 HTTP/1.1 200 OK
 Date: Mon, 29 Aug 2016 13:59:59 GMT
 Cache-Control: public
 Date: Mon, 29 Aug 2016 13:59:59 GMT
 Content-Type: application/javascript;charset=UTF-8
 Vary: Accept-Encoding, User-Agent
 ETag: "0f93db3b42f19c57f4a216dd80f63bae5--gzip"
 Server: Jetty(9.2.7.v20150116)
 Transfer-Encoding: chunked