在R的plot.lm残差图中设置ylim

时间:2015-04-07 05:08:21

标签: r plot

假设我正在使用y ~ x做一个线性模型。我得到了残差图,例如

plot(lm(y ~ x, data.frame(x=c(1,2,3), y=c(4,6,9))), 1)

如何为此情节设置ylim? (向此函数提供例如ylim = c(-1,1)不起作用)。

1 个答案:

答案 0 :(得分:2)

ylim被硬编码到函数stats:::plot.lm中(即,类#34; lm")的对象的s3 plot方法。此功能不会从stats包导出。要解决这个问题,您可以复制该功能并对其进行修改:

plotlm <- stats:::plot.lm

您可以使用fix("plotlm")进行修改。在函数定义中添加ylim形式参数,然后找到代码的相关部分。你应该改变:

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))

并获得所需的结果:

enter image description here