我刚刚在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)
我应该如何进一步研究它,我可能必须使用地毯功能(我正在努力学习如何使用)?我还可以在上述图表上加上时间戳吗?
编辑:所以我修改了我的命令并使用了:
x <- c(cumsum(rexp(50, 0.2)))
y <- rep(0, length(x))
plot(x,y)
rug(x)
我能够得到这个: Revised Plot
我再次提出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)