问题描述
我正在尝试使用标准 R 命令在 R 中绘制一些不同的伽马分布函数 - 没有包。
正如您在此处看到的,我正在为我绘制的每个函数重做 y 轴。有没有办法让我的所有 7 个函数沿着相同的 y 轴运行?这是我的代码
par(mfrow=c(1,1))
x <- seq(0,1,length = 10000)
fun1 <- function(x) dgamma(x,2)
fun2 <- function(x) dgamma(x,2,2)
fun3 <- function(x) dgamma(x,3,2)
fun4 <- function(x) dgamma(x,5,1)
fun5 <- function(x) dgamma(x,9,.5)
fun6 <- function(x) dgamma(x,7.5,1)
fun7 <- function(x) dgamma(x,.5,1)
plot(fun1,20,col = "red")
par(new = TRUE)
plot(fun2,col = "orange")
par(new = TRUE)
plot(fun3,col = "yellow")
par(new = TRUE)
plot(fun4,col = "green")
par(new = TRUE)
plot(fun5,col = "black")
par(new = TRUE)
plot(fun6,col = "blue")
par(new = TRUE)
plot(fun7,col = "purple")
解决方法
与其使用 S3 dispatch 调用 plot.function()
,我更愿意直接调用 curve()
,并使用 add
参数而不是 par(new = TRUE)
将行添加到现有阴谋;然后我们只得到一组 y 轴的轴和刻度标签:
curve(fun1,20,col = "red")
curve(fun2,col = "orange",add = TRUE)
curve(fun3,col = "yellow",add = TRUE)
curve(fun4,col = "green",add = TRUE)
curve(fun5,col = "black",add = TRUE)
curve(fun6,col = "blue",add = TRUE)
curve(fun7,col = "purple",add = TRUE)
如您所见,这与您最初的绘图完全不同,这是因为它每次都重新绘制轴而不是坚持一组轴限制。