问题:我想保持列定义的宽度(0.20);但是,我想把列放得更近。我正在尝试使用position_dodge来做它,但它似乎不起作用(我改变了position_dodge的宽度,但我看到输出没有变化)。
数据:
SITE N CHL sd se ci
SITE1 20 0.01037453 0.004217003 0.0009429505 0.001973618
SITE2 20 0.01704401 0.006188691 0.0013838333 0.002896396
SITE3 19 0.01191036 0.004188927 0.0009610057 0.002018998
脚本:
dodge <- position_dodge(width = 0.25)#this is the width I try to change to get the columns closer, but it doesn't do it
ggplot() + geom_bar(data=s_site2chl, aes(x=SITE, y=CHL, fill=SITE),
stat="identity", colour="black", width = .20, position = dodge)
答案 0 :(得分:1)
使用position_dodge()
没有用,因为你的情节中没有任何内容。如果您有几个具有相同x
- 值的条形,则该位置才重要。然后,您需要选择,是否要将它们堆叠在彼此之上(“堆叠”),彼此相邻(“闪避”),或让它们相互叠加(“身份”)。但是每个x
只有一个条形 - 值,因此位置无关紧要。
正如其他人所建议的那样,你可以通过使它们更宽,将它们拉近。如果设置width = 1
,则会触摸条形图,如果选择较小的值,则仍会有间隙:
ggplot() + geom_bar(data=s_site2chl, aes(x=SITE, y=CHL, fill=SITE),
stat="identity", colour="black", width = .8)
你在一条评论中说,你只想把酒吧拉得更近,但不要让它们更宽。我可以看到至少两种方法来实现这一目标。一种是用不同的分辨率保存图。上图宽590像素,高380像素。如果我用一半宽度存储它,我得到这个:
第二种可能性是你在两侧扩展x轴。您可以按如下方式使用scale_x_discrete()
:
ggplot() + geom_bar(data=s_site2chl, aes(x=SITE, y=CHL, fill=SITE),
stat="identity", colour="black", width = .8) +
scale_x_discrete(expand = c(0, 2))
expand
带有两个向量,其含义如下(来自?discrete_scale
):
长度为2的数值向量,给出乘法和加法常数,用于扩展比例范围,以便数据和轴之间存在小的间隙。离散尺度的默认值为(0,0.6),连续尺度的默认值为(0.05,0)。
我将附加值设置为2
(而不是默认的0.6
),这会在条形图的两边添加更多空间,从而使它们更薄。