Compare with the following other settings for width:
So far, so good. Now, suppose we have two factors. In case you would like to play with evenly spaced juxtaposed bars (like when using space together with beside=TRUE in barplot()), it's not so easy using geom_bar(position="dodge"): you can change bar width, but not add space in between adjacent bars (and I didn't find a convenient solution on Google). I ended up with something like that:
The vector used for the $x$-axis is "injected" in the data.frame, so that so you change the outer spacing if you want, while width allows to control for inner spacing. Labels for the $x$-axis might be enhanced by using scale_x_discrete().
The width in geom_bar controls the bar width in relation to the x-axis while the width in position_dodge control the width of the space given to both bars also in relation to the x-axis. Play around with the width to find one that you like.
Thank you very much chl.! I had the same problem and you helped me solving it. Instead of using geom_text to add the X-labels I used scale_x_continuous (see below)
发布评论
评论(5)
您始终可以使用
width
参数,如下所示:与以下
width
的其他设置进行比较:到目前为止,一切顺利。现在,假设我们有两个因素。如果您想使用均匀间隔的并置条形(例如在
barplot()
中将space
与beside=TRUE
一起使用时),可以使用使用geom_bar(position="dodge")
不太容易:您可以更改条形宽度,但不能在相邻条形之间添加空间(我在 Google 上没有找到方便的解决方案)。我最终得到了类似的结果:用于 $x$ 轴的向量被“注入”到 data.frame 中,这样您就可以根据需要更改外部间距,而
width
允许控制内部间距。 $x$ 轴的标签可以通过使用scale_x_discrete()
来增强。You can always play with the
width
parameter, as shown below:Compare with the following other settings for
width
:So far, so good. Now, suppose we have two factors. In case you would like to play with evenly spaced juxtaposed bars (like when using
space
together withbeside=TRUE
inbarplot()
), it's not so easy usinggeom_bar(position="dodge")
: you can change bar width, but not add space in between adjacent bars (and I didn't find a convenient solution on Google). I ended up with something like that:The vector used for the $x$-axis is "injected" in the data.frame, so that so you change the outer spacing if you want, while
width
allows to control for inner spacing. Labels for the $x$-axis might be enhanced by usingscale_x_discrete()
.对于因子条之间的空间,使用
geom_bar 中的宽度控制相对于 x 轴的条宽度,而position_dodge 中的宽度控制给予两个条的空间宽度(也相对于 x 轴)。尝试调整宽度,找到您喜欢的宽度。
For space between factor bars use
The width in geom_bar controls the bar width in relation to the x-axis while the width in position_dodge control the width of the space given to both bars also in relation to the x-axis. Play around with the width to find one that you like.
从 ggplot 3.0.0 开始,您可以使用
position_dodge2
。它需要一个padding
参数来在条之间添加空间。默认内边距为 0.1。因为我知道您想看到不同的填充选项:
As of ggplot 3.0.0, you can use
position_dodge2
. It takes apadding
argument that adds space in between the bars.Default padding is 0.1. Since I know you want to see different padding options:
非常感谢chl.!我遇到了同样的问题,你帮我解决了。我没有使用 geom_text 添加 X 标签,而是使用scale_x_continuous(见下文)
替换为
Thank you very much chl.! I had the same problem and you helped me solving it. Instead of using geom_text to add the X-labels I used scale_x_continuous (see below)
replaced by
对于 POSIXlt 条之间的空间,您需要根据一天中的秒数调整宽度
For space between POSIXlt bars you need adjust the width from the number of seconds in a day