如何在R中使用rug函数进行指数分布?

时间:2018-04-03 08:55:48

标签: r plot ggplot2 exponential-distribution

我刚刚在R开始,如果我的问题非常基本,请道歉。我想在x轴上绘制时间间隔(分布是指数的),每次间隔结束时都有一个刻度标记。如果我有一串时间说(0.2,0.8,0.9,1.0)那么x轴上的刻度线将分别为0.2,0.8,0.9和1。对于大数据样本,我希望我的图形看起来像 - Spike Train

所以使用后,

set.seed(1)
x <- rexp(50, 0.2)

我应该如何进一步研究它,我可能必须使用地毯功能(我正在努力学习如何使用)?我还可以在上述图表上加上时间戳吗?

编辑:所以我修改了我的命令并使用了:

x <- c(cumsum(rexp(50, 0.2)))
y <- rep(0, length(x))
plot(x,y)
rug(x)

我能够得到这个: Revised Plot

我再次提出2个重复点,包括图片。如果只是这样的话,这个结果就可以完成。但是,是否有一行命令我可以用来编辑这个结果,如第二张图所示,并获得如第一张图片所示的结果?我真的想在水平线而不是整个情节上得到这些刻度线。或者它不可能?如果有人知道,请帮忙。

2 个答案:

答案 0 :(得分:1)

使用ggplot,您可以使用geom_rug()为地图添加地毯。首先,需要将数据转换为data.frame

library("tidyverse")
set.seed(1)
x <- rexp(50, 0.2)

ggplot(data.frame(x), aes(x = x)) + geom_rug()

地毯相当短(它似乎是图形高度的一部分,不可控制)。

相反的是使用geom_vline,这将给出y轴全长的线条

#ggplot(data.frame(x), aes(xintercept = x)) + geom_vline() #doesn't work
ggplot(data.frame(x)) + geom_vline(aes(xintercept = x))

答案 1 :(得分:0)

rug()只需要一个值向量来描述绘制标记(地毯)的位置。如果在x轴上绘制值x,则形成rug函数的输入数据。输入?rug以获得进一步的帮助。

# generate y values
y <- rexp(50, 0.2)
# split plotting area into two columns - optional
par(mfrow = c(1, 2))
plot(x, y)
rug(x)
# plot with both axes in log scale to show that rug adjusts to axes scale
plot(x, y, log = "xy")
rug(x)

enter image description here