[英]Plotting line segments on top of a plot from a previous run of an R function
我有一個稱為stock
的R
函數(如下)。 我想知道是否可以以任何方式將函數的每次運行(這是plot()
)的結果繪制(即添加)到函數上一次運行的圖的頂部? (代碼下面的圖片可能顯示了這一點)
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
最簡單的方法是為該選項添加一個參數。 默認情況下, segments()
添加到前一幀,因此您要做的就是不做新的plot()
。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.