簡體   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