[Rd] plot.lm: "Cook's distance" label can overplot point labels

John Maindonald john.maindonald at anu.edu.au
Tue Feb 17 23:53:39 CET 2009


The following code demonstrates an annoyance with plot.lm():

library(DAAGxtras)
x11(width=3.75, height=4)
nihills.lm <- lm(log(time) ~ log(dist) + log(climb), data = nihills)
plot(nihills.lm, which=5)

OR try the following
xy <- data.frame(x=c(3,1:5), y=c(-2, 1:5))
plot(lm(y ~ x, data=xy), which=5)

The "Cook's distance" text overplots the label for the point with the  
smallest residual.  This is an issue when the size of the plot is much  
less than the default, and the pointsize is not reduced proportionately.


I suggest the following:
       xx <- hii
       xx[xx >= 1] <- NA
## Insert new code
       fracht <- (1.25*par()$cin[2])/par()$pin[2]
       ylim[1] <- ylim[1] - diff(ylim)*max(0, fracht-0.04)
## End insert new code
       plot(xx, rsp, xlim = c(0, max(xx, na.rm = TRUE)),
            ylim = ylim, main = main, xlab = "Leverage",
            ylab = ylab5, type = "n", ...)

Then, about 15 lines further down, replace
         legend("bottomleft", legend = "Cook's distance",
                lty = 2, col = 2, bty = "n")

by
         legend("bottomleft", legend = "Cook's distance",
                lty = 2, col = 2, bty = "n", y.intersp=0.5)

If this second change is not made, then one wants fracht <- (1.5*par() 
$cin[2])/par()$pin[2]
I prefer the "Cook's distance" text to be a bit closer to the x-axis,  
as it separates it more clearly from any point labels.

John Maindonald             email: john.maindonald at anu.edu.au
phone : +61 2 (6125)3473    fax  : +61 2(6125)5549
Centre for Mathematics & Its Applications, Room 1194,
John Dedman Mathematical Sciences Building (Building 27)
Australian National University, Canberra ACT 0200.



More information about the R-devel mailing list