[英]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.