R 如何获得ggplot中条之间的间隙?

R 如何获得ggplot中条之间的间隙?,r,ggplot2,graph,R,Ggplot2,Graph,救命啊 我使用ggplot2每月并排绘制两个值的计数(d1和d2) 我的代码当前生成如下图表: 但我真的需要每个月在成对的条之间添加一个空格,以便更清晰地阅读。我试了很多东西,但都没用。有人能提出解决办法吗 答案给出了建议,并生成了两条线相互重叠的图,我得到了错误消息“position_dodge需要不重叠的x间隔” 这是我的密码: m_scores = ddply(data_NKsam2,.(zdate),summarise, d1 = sum(d1) , d2 = sum(d2)) re

救命啊

我使用ggplot2每月并排绘制两个值的计数(d1和d2)

我的代码当前生成如下图表:

但我真的需要每个月在成对的条之间添加一个空格,以便更清晰地阅读。我试了很多东西,但都没用。有人能提出解决办法吗

答案给出了建议,并生成了两条线相互重叠的图,我得到了错误消息“position_dodge需要不重叠的x间隔”

这是我的密码:

m_scores = ddply(data_NKsam2,.(zdate),summarise, d1 = sum(d1) , d2 = sum(d2))

require(tidyr)

df <- gather(m_scores, event, total, d1:d2)

plot <- ggplot(df, aes(zdate, total, fill=event))
plot <- plot + geom_bar(stat = "identity", position = 'dodge')

或者在这里,我尝试使用dput()复制它:

structure(list(zdate = structure(c(2014, 2014.08333333333, 2014.16666666667, 
2014.25, 2014.33333333333, 2014.41666666667, 2014.5, 2014.58333333333, 
2014.66666666667, 2014.75, 2014.83333333333, 2014.91666666667, 
2015, 2015.08333333333, 2015.16666666667, 2015.25, 2015.33333333333, 
2015.41666666667, 2015.5, 2015.58333333333), class = "yearmon"), 
    d1 = c(2, 5, 2, 2, 3, 3, 5, 8, 3, 158, 263, 430, 507, 326, 
    281, 352, 280, 243, 313, 446), d2 = c(0, 3, 5, 1, 3, 2, 0, 
    1, 2, 131, 318, 662, 326, 279, 345, 260, 315, 238, 251, 439
    )), row.names = c(NA, 20L), class = "data.frame")


非常感谢任何人能提供的帮助

您可以设置
宽度
参数。这将控制减淡条的总数(在其间创建空间)。请参见此处对打印线的修订:

plot + geom_bar(stat = "identity", position = 'dodge')

设置了
width
参数:

plot + geom_bar(stat = "identity", position = 'dodge', width=0.5)

我无法轻松读取中的数据,请参阅。@Axeman我试图使用dput()使其更容易-这有帮助吗?谢谢谢谢,那好多了!(正如您所注意到的,这也有助于避免混淆!)谢谢您的帮助!你在照片上的表现正是我想要的。但当我尝试用我的数据绘制这条线时,我得到了警告信息:position_dodge需要不重叠的x间隔,并且这些条相互挤压。你知道为什么,为什么它对你有用吗?这是因为你的
zdate
列不是离散的。我最初使用的
zdate
包含的值类似于
“2014年11月11日”
(读取以文本形式发布的数据)。列本身是
chr
类型,因此它是离散的。在
dput()
输出中,我看到您正在共享
zdate
是一个
num
类型,它是连续的。这就是造成错误的原因。您可以将这些值建模为日期,也可以将它们列为字符的有序向量,但您需要离散的x轴值来正确避开列。太好了,非常感谢!如何最好地将
zdate
转换为这两个属性之一?我想我可以在
m_scores
中用这些值创建一个新的向量,但我不确定如何进行转换?好吧,你可以将你的日期转换为一种日期格式(查看
lubridate
包中的提示)-但这可能会变得复杂,而且可能不是你想要的,取决于数据的分布方式。如果你只想在x轴上排列它们,并且它们之间的间距相等,你可以说
factor(zdate)
而不是
zdate
,这将迫使你的数字列变成一个factor,从而使它成为一列离散值。我最后在你的文本版本中阅读了你共享的输出(在您通过
dput()
)共享之前)-通过
read.table(header=TRUE,text=“…您的文本…”)
。我必须添加
d
m
y
字符来代替
zdate
,以读取所有带空格的列(因此标题是
d m y d1
),然后我将这些列与
your_data$zdate连接在一起
plot + geom_bar(stat = "identity", position = 'dodge', width=0.5)