2016-03-04 146 views
1

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

我不清楚你想用position_dodge实现什么。查看[此链接](http://docs.ggplot2.org/current/position_dodge.html)可能对您有所帮助。 – jazzurro

+0

我想改变小节之间的距离,使小节更接近彼此(不相互接触,更近)。我看到了链接,但是我不知道我在做什么错误:我定义了一个宽度,并且定义了一个位置闪避... – kumbu

+0

如果您为'width'设置了较大的值,我认为它应该是酒吧。 – Stibu

回答

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),这增加在杆的两侧更多的空间,其结果使它们更薄。