增加绘图中点之间的距离

时间:2014-06-04 18:03:05

标签: r plot ggplot2

我有一个与this question相关的问题。

我在ggplot2中绘制了我的数据,但我想在这些点之间以及各组之间留出更多空间。我在17天内绘制ESM数据,我想在一个情节中显示一个人的情绪如何在他/她评价他/她的情绪时发生变化。

因此,我想只绘制点(没有线),我想在点之间留出一些空间,以便可以看到首先输入了哪个点,并且我希望在天之间有更多的空间(x变量),这样可见哪些点属于哪一天。

示例数据:

beep <- c(74.50, 77.50, 89.50, 75.25, 58.25, 81.25, 88.75, 89.25, 74.25, 71.00)
days <- c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4)
df <- as.data.frame(cbind(days, beep))
ggplot(df, aes(days, beep)) + geom_point()

在这个MWE中,ggplot将数据点堆叠在一条垂直线上,而我希望看到哪一个数据点在那一天出现(我希望我能解释清楚)。

1 个答案:

答案 0 :(得分:2)

如果你知道&#34;时间间隔&#34;你更准确地观察你可以直接将它添加到日期向量中。例如,如果测量值在整天均匀分布,则可以设置

days <- c(1, 1+1/3, 1+2/3, 2, 2+1/2, 3, 3+1/2, 4, 4+1/3, 4+2/3)

您可以轻松地自动执行从原始矢量制作此矢量的过程。但是,如果您没有这些信息,但只知道观察的顺序和日期,为什么不让x轴传达顺序并找到另一种可视化日期变化的方法。例如,使用背景颜色。

beep <- c(74.50, 77.50, 89.50, 75.25, 58.25, 81.25, 88.75, 89.25, 74.25, 71.00)
days <- c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4)
order <- c(1:10)
df <- as.data.frame(cbind(days, beep,order))
ggplot(df, aes(order, beep,xmin=order-0.5,xmax=order+0.5,ymin=-Inf,ymax=Inf, fill=as.factor(days%%2))) + 
  geom_rect(aes(alpha=0.2))  +
  geom_point() +theme_bw() +
  scale_x_continuous(breaks=1:10) + guides(alpha=F,fill=F)

enter image description here