繁体   English   中英

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

[英]How do I use the rug function for an exponential distribution in R?

我刚从 R 开始。我想在 x 轴上绘制时间间隔(分布是指数的),每次间隔结束时都有一个刻度线。 如果我有一串时间说 (0.2, 0.8, 0.9 , 1.0),那么 x 轴上的刻度线将分别在 0.2、0.8、0.9 和 1 上。 对于大数据样本,我希望我的图表看起来像:

尖刺列车

所以使用后,

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

我怎样才能更进一步,我是否必须使用 rug 功能(我正在尝试学习如何使用)? 我也可以在这张图上加上时间戳吗?

编辑

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

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

我已经能够得到这个:

修改后的情节

如果只是这样的话,这个结果就可以了。 但是,我可以使用一行命令来编辑此结果,如第二张图片所示,并获得如第一张图片所示的结果吗? 我只想在水平线上而不是整个情节上获得这些刻度线。 还是不可能?

使用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))

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)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM