簡體   English   中英

在上一個R函數運行的圖上繪制線段

[英]Plotting line segments on top of a plot from a previous run of an R function

我有一個稱為stockR函數(如下)。 我想知道是否可以以任何方式將函數的每次運行(這是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM