在上一次运行R函数的绘图顶部绘制线段
我有一个名为在上一次运行R函数的绘图顶部绘制线段,r,function,for-loop,plot,vectorization,R,Function,For Loop,Plot,Vectorization,我有一个名为stock(以下)的R函数。我想知道是否有可能将每次函数运行的结果(即plot())绘制(即添加)在上一次函数运行的绘图之上?(代码下面的图片可能会显示这一点) 最简单的方法是为选项添加一个参数。由于默认情况下,segments()会添加到上一帧中,因此您只需不执行新的plot() 最简单的方法是为选项添加一个参数。由于默认情况下,segments()会添加到上一帧中,因此您只需不执行新的plot() 实际上,第一次和第二次跑步的曲线图会相互重叠。你会把它们看作一行,而不是两行。是的
stock
(以下)的R
函数。我想知道是否有可能将每次函数运行的结果(即plot()
)绘制(即添加)在上一次函数运行的绘图之上?(代码下面的图片可能会显示这一点)
最简单的方法是为选项添加一个参数。由于默认情况下,
segments()
会添加到上一帧中,因此您只需不执行新的plot()
最简单的方法是为选项添加一个参数。由于默认情况下,
segments()
会添加到上一帧中,因此您只需不执行新的plot()
实际上,第一次和第二次跑步的曲线图会相互重叠。你会把它们看作一行,而不是两行。是的,我明白。但第二个图的y值不高于第一个图。把它们都画出来,你会发现如果一起画在一个图上,它看起来就像一条线,而不是一条线在另一条线上。你想任意向上移动第二个吗?实际上,第一次和第二次跑步的曲线图会相互重叠。你会把它们看作一行,而不是两行。是的,我明白。但第二个图的y值不高于第一个图。把它们都画出来,你会发现如果一起画在一个图上,它看起来就像一条线,而不是一条线在另一条线上。你想随意把第二个向上移动吗?
stock = function(m, s){
loop = length(s)
I = matrix(NA, loop, 2)
for(i in 1:loop){
I[i,] = quantile(rbeta(1e2, m, s[i]), c(.025, .975))
}
plot(rep(1:loop, 2), I[, 1:2], ty = "n", ylim = 0:1, xlim = c(1, loop))
segments(1:loop, I[, 1], 1:loop, I[, 2])
}
# Example of use:
stock(m = 2, s = c(1, 10, 15, 20, 25, 30))
stock(m = 50, s = c(1, 10, 15, 20, 25, 30)) #The result of this run be plotted on top of previous run above
stock = function(m, s, add=FALSE) {
loop = length(s)
I = matrix(NA, loop, 2)
for(i in 1:loop) {
I[i,] = quantile(rbeta(1e2, m, s[i]), c(.025, .975))
}
if (!add) {
plot(rep(1:loop, 2), I[, 1:2], ty = "n", ylim = 0:1, xlim = c(1, loop))
}
segments(1:loop, I[, 1], 1:loop, I[, 2], xpd = NA)
}
# Example of use:
set.seed(1)
stock(m = 2, s = c(1, 10, 15, 20, 25, 30))
stock(m = 50, s = seq(1, 90, 10), add=TRUE)