如何用一个变量为多个参数值绘制函数?

时间:2020-05-01 17:09:02

标签: r

下午好!

我具有变量n的以下功能:

P(n) = 1-(1-p)^n 
  • p是区间[0,1]中的参数

我想在同一图中绘制具有几个p值的一个三维函数:

p=seq(0 , 1 , 0.1 ) 

所以我尝试了p = 0.1和p = 0.9:

p=0.1

n <- seq(0, 100, 8) ;  y <- 1-(1-p)^n 

plot(n , y ,pch= 21,type = "o", col = "red", xlab = "n-values", ylab = "P(n) values ", main = "P(n)= 1-(1-p)^n ")

p=0.9

lines(n , 1-(1-p)^n , type="o", pch=16 , col="blue") 

legend(60 , 0.4, c("p=0.1","p=0.9"), cex=0.7, col=c("red", "blue"),pch=c(21, 16))

这给出了:

enter image description here

问题:

  • 我正在寻找一种优雅的方法来绘制此函数的所有值 在同一图中p = seq(0,1,0.1)。我想删除 外推效果(我想删除pch符号 全部,该图包含了具有不同颜色的曲线,并且没有外推线段的效果。)

  • 我希望我的问题很清楚。

    谢谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用outermatplot,更多x值和合适的配色方案:

n <- seq(0, 100, length.out=200)
p <- seq(0.1, 1, 0.1)
f <- function(n, p) 1-(1-p)^n
M <- outer(n, p, "f")
col <- hcl.colors(length(p), "Spectral")
matplot(n, M, type = "l", col = col, lty = 1)
legend("bottomright", legend = p, col = col, lty = 1)

答案 1 :(得分:2)

另一种简单的方法是替换

lines(n , 1-(1-p)^n , type="o", pch=16 , col="blue") 

p = seq(0,1,0.1)
invisible(lapply(p, function(i) {lines(n, 1-(1-i)^n, type="o", col=i*10)}))