酒吧之间的距离(位置躲闪不起作用)

时间:2016-03-04 01:56:05

标签: r ggplot2

问题:我想保持列定义的宽度(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)

1 个答案:

答案 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)

enter image description here

你在一条评论中说,你只想把酒吧拉得更近,但不要让它们更宽。我可以看到至少两种方法来实现这一目标。一种是用不同的分辨率保存图。上图宽590像素,高380像素。如果我用一半宽度存储它,我得到这个:

enter image description here

第二种可能性是你在两侧扩展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))

enter image description here

expand带有两个向量,其含义如下(来自?discrete_scale):

  

长度为2的数值向量,给出乘法和加法常数,用于扩展比例范围,以便数据和轴之间存在小的间隙。离散尺度的默认值为(0,0.6),连续尺度的默认值为(0.05,0)。

我将附加值设置为2(而不是默认的0.6),这会在条形图的两边添加更多空间,从而使它们更薄。