提问人:MrSparkly 提问时间:11/11/2023 最后编辑:Karolis KoncevičiusMrSparkly 更新时间:11/11/2023 访问量:45
在 y 上绘制随机数,x 是范围
Plot random numbers on y, x is the range
问:
我想在 0-180 范围内生成 50 个随机值。我做了什么:
a=runif(50,min=0,max=180)
现在我想要这个图:x 轴是 0-180 的范围,y 轴只是一个值 (1),显示一个点,其中 0-180 数字存在于“a”集合中,如果没有,则什么都没有。
我是否需要为 x 轴生成数字 0-180,或者 R 可以只使用“a”集来做到这一点?如果我这样做,我会得到一个散点图,其中 x 是索引,y 是值。plot(a)
答:
3赞
Stephan Kolassa
11/11/2023
#1
首先准备一个空图:
plot(c(0,180),c(1,1),type="n",yaxt="n",xlab="",ylab="")
(该参数确保未绘制任何内容。我们使用 .) 抑制垂直轴。type="n"
yaxt="n"
然后以恒定的 $y$ 值 1 将点相加:
points(a,rep(1,length(a)),pch=19)
当然,纵横比可以提高(最容易的方法是在打开图形设备时指定高度和宽度,例如,在完成打印时需要关闭 ,使用)。我们可以改变图周围的空白;看。png()
dev.off()
?par
3赞
Karolis Koncevičius
11/11/2023
#2
如果你想要一些与示例非常相似的东西,这里是:
x <- runif(50, 0, 180)
# make an empty plot
plot.new()
plot.window(xlim = c(0,185), ylim = c(0,2), xaxs = "i")
# add grid lines
abline(h = 1, col = "gray", lwd = 2)
abline(v = c(0,90,180), col = "gray", lwd = 2)
# add points
points(x, rep(1, length(x)), pch = 19, cex = 1.5)
# add axes
axis(1, at = c(0,90,180), font = 2, cex.axis = 2, tck = 0)
box(bty = "L", lwd = 3)
评论
1赞
MrSparkly
11/11/2023
谢谢,代码比其他答案长,但它重新创建了外观,太:)
1赞
AkselA
11/11/2023
#3
根据您想要的与给定示例的确切接近程度,代码可能非常简单。例如
dev.new(width=5, height=3)
stripchart(a, pch=16, xaxp=c(0, 180, 2), xlim=c(0, 180), xaxs="i")
grid(nx=4, ny=2, col="#00000044", lty=1)
给
如果您想比较多个样本,使用作为基础可能是明智的。例如:stripchart()
set.seed(1)
l <- list(a=a, b=runif(10, min=60, max=240))
dev.new(width=5, height=3)
stripchart(l, pch=16, xaxp=c(0, 240, 4), xlim=c(0, 240), ylim=c(0.5, 2.5), xaxs="i")
abline(v=seq.int(0, 240, length.out=5), col="#00000044")
abline(h=1:2, col="#00000044")
评论