假设我想绘制一个 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")
}
这将产生一个像
关于r - 在 R 中绘制带有多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26431555/