R语言 car包中scatterplot()函数以及id.method交互问题

《R语言实战》scatterplot()报错

以下是《R语言实战》(第2版)中的一段代码:

library(car)
scatterplot(mpg~wt|cyl,data = mtcars,lwd=2,span=0.75,
            main="Scatter Plot of MPG vs. Weight by # Cylinders",
            xlab = "Weight of Car (1bs/1000)",
            ylab = "Miles Per Gallon",
            legend.plot=T,
            id.method="identify",
            labels=row.names(mtcars),
            boxplots="xy"
)

*运行后显示:

Error in axis(side = side, at = at, labels = labels, ...) : 
  'label'的值虽然是有了,但'at'的值却不存在
In addition: There were 11 warnings (use warnings() to see them)

具体warning信息以及显示图见附图

请问如何解决?

id.method="identify"问题

以下两段代码在设置这一参数后点击生成的图中的点都没有交互显示labels选项的设定值,请问这是怎么回事?如何修改?

library(car)
states<-as.data.frame(state.x77[,c("Murder","Population",
                                   "Illiteracy","Income","Frost")])
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
qqPlot(fit,labes=row.names(states),id.method="identify",simulate=T,main="Q-Q Plot")
library(car)
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
influencePlot(fit, id.method="identify" ,main="Influence Plot",
              sub="Circle size is proportional to Cook's distance")

今天我也遇到这个问题了,现在才解决,这个其实是car包更新了,一些参数也改变了,多看help()。
我一开始按照《R语言实战》中的来也是搞不了的,后来看了一下help()函数,上面已经没有id.method这个参数了,转而是变成id这个参数,此外id这个参数里还多了一些其他的参数,因此不能按原来的搞了,也就是说原来的《R语言实战》上的写法实际上随着时代的发展已经出错了,网络上一些人的搞法也其实是没更新car包之前的搞法。在这里,应该在qqPlot里加一个
id=list(method="identify",labels=row.names(你们自己的数据集)),以前的labels和method现在就移进去了,输入完后,指针就会变成“十”字,之前的搞法是不会的变的,现在的话,靠近图像的点,点那几个你需要看到名字的点,之后按esc,就会在图形上显示。现在这个问题就解决了。

豆瓣上的是我的首答。我试一下这里能不能发高清的图。
图片说明

找到了一种替代方法:删掉原代码中的#id.method="identify",和 #labels=row.names(mtcars),之后在下方用showlabels()实现,具体代码如下:

     library(car)
scatterplot(mpg~wt|cyl,data = mtcars,lwd=2,span=0.75,
            main="Scatter Plot of MPG vs. Weight by # Cylinders",
            xlab = "Weight of Car (1bs/1000)",
            ylab = "Miles Per Gallon",
            legend.plot=T,
            boxplots="xy"
)
with(mtcars, showLabels(wt, mpg,
                          labels = row.names(mtcars), method="identify"))

id=list(method="identify")