让's say I'用 y ~ x 做一个线性模型 . 我得到残差图,例如
y ~ x
plot(lm(y ~ x, data.frame(x=c(1,2,3), y=c(4,6,9))), 1)
我怎样才能为这个情节设定ylim? (例如,将ylim = c(-1,1)提供给此函数不起作用) .
ylim 被硬编码到函数 stats:::plot.lm 中(即,类"lm"的对象的s3 plot 方法) . 此功能不会从stats包导出 . 要解决这个问题,您可以复制该功能并进行修改:
ylim
stats:::plot.lm
plot
plotlm <- stats:::plot.lm
您可以使用 fix("plotlm") 进行编辑 . 在函数定义中添加 ylim 形式参数,然后找到代码的相关部分 . 你应该改变:
fix("plotlm")
if (show[1L]) { ylim <- range(r, na.rm = TRUE) if (id.n > 0) ylim <- extendrange(r = ylim, f = 0.08) dev.hold() plot(yh, r, xlab = l.fit, ylab = "Residuals", main = main, ylim = ylim, type = "n", ...) # ...
至:
if (show[1L]) { if(missing(ylim)) { ylim <- range(r, na.rm = TRUE) if (id.n > 0) ylim <- extendrange(r = ylim, f = 0.08) } dev.hold() plot(yh, r, xlab = l.fit, ylab = "Residuals", main = main, ylim = ylim, type = "n", ...) # ...
然后你可以调用这个新函数:
plotlm(lm(y ~ x, data.frame(x=c(1,2,3), y=c(4,6,9))), 1, ylim = c(-1,1))
并获得所需的结果:
1 回答
ylim
被硬编码到函数stats:::plot.lm
中(即,类"lm"的对象的s3plot
方法) . 此功能不会从stats包导出 . 要解决这个问题,您可以复制该功能并进行修改:您可以使用
fix("plotlm")
进行编辑 . 在函数定义中添加ylim
形式参数,然后找到代码的相关部分 . 你应该改变:至:
然后你可以调用这个新函数:
并获得所需的结果: