r - 在 R 中绘制带有多个参数的函数

标签 r graphics plot

假设我想绘制一个 R 函数:

weibull <- function(ALPHA, LAMBDA, T){
ALPHA*LAMBDA*(T^(ALPHA-1))
}

因此该函数采用参数 alpha、lambda 和 T。我想生成一个图,其中一个图 alpha = 0.5,时间范围从 0 到 2 和 lambda=1、2、4、8、16,在另一个图中,alpha= 1,时间范围从0到2,lambda=1, 2, 4, 8, 16。

过去,为了用一个参数绘制函数,我使用了曲线,然后如果我想在同一个图上有另一条曲线,则完成 ADD=TRUE。例如,过去我使用过:
lambda <- 0.5
pdf <- function(x){
lambda*exp(-lambda*x)
}
survival <- function(x){
exp(-lambda*x)
}
plot(curve(pdf, 0, 6), type="l", ylim=c(0, 1), lwd=3, ylab="", xlab="", xaxs="i", yaxs="i", main=expression(paste("Exponential Distribution ", lambda, "=0.5")), cex.main=2, cex.axis=2, cex.lab=2)
curve(survival, 0, 6, add=TRUE, col="plum4", lwd=3)

但在这个例子中,函数只有一个参数,即 x。而现在我想改变 LAMBDA、T 和 ALPHA。曲线功能不起作用,我不知道如何解决这个问题。

最佳答案

如果您使用 curve ,您可以使用自由变量 x 指定表达式它将被您的 from= 中指定的值范围替换/to=参数。例如你可以做

weibull <- function(ALPHA, LAMBDA, T){
    ALPHA*LAMBDA*(T^(ALPHA-1))
}

lambda<-c(1, 2, 4, 8, 16)
col<-rainbow(length(lambda))
layout(matrix(1:2, nrow=1))
for(i in seq_along(lambda)) {
    curve(weibull(.5, lambda[i], x), from=0, to=2, add=i!=1, col=col[i], ylim=c(0,50), main="alpha=.5")
}
legend(1,50,lambda, col=col, lty=1)
for(i in seq_along(lambda)) {
    curve(weibull(1, lambda[i], x), from=0, to=2, add=i!=1, col=col[i], ylim=c(0,20), main="alpha=1")
}

这将产生一个像

enter image description here

关于r - 在 R 中绘制带有多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26431555/

相关文章:

r - dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

java - 为 JFrame 设置背景颜色

r - R : plot & the result is “plot.new has not been called yet”

matlab - 如何在右下角而不是右上角显示图例?

python - 在 Python 中生成、填充和绘制六边形格子

r- 使用 purrr::map 时存储警告消息而不丢弃结果

r - 在 R 中的 arima.sim 中初始化

r - 如何将数据框拆分为给定列名的数据框列表?

cocoa - 如何创建具有倾斜效果的 NSAffineTransform?

java - 在 Canvas 内画线