plot shapefile变量:错误的灰度无效,必须在[0,1]中。 [R

时间:2018-11-11 16:35:57

标签: r regression

我有一个shapefile,该文件已通过R中的空间回归模型运行。

我从回归模型中提取了残差并将其作为新变量添加到原始shapefile中。我希望绘制这些残差,但遇到一些问题。

这是我的代码:

     plot(shapefile,col=gray(shapefile@data$residuals))

我收到此错误:

  invalid gray level, must be in [0,1].

我是否正确假设这与残差的值有关?它们的范围是-40至+20。有没有办法将此比例从0-1更改为更大的比例?还是更简单的方法来绘制这些图形?

我也尝试了spplot:

     spplot(shape@data$residuals)

并收到错误:

 Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘spplot’ for signature 
  ‘"numeric"’

1 个答案:

答案 0 :(得分:0)

col = grey()根据放置在其中的值生成灰度的十六进制代码。是的,这些数字应在0:1之间。如果要为每个唯一残差获取单独的灰色十六进制代码,则可以使用lengthunique函数来实现。下面是一个示例,其中对于每个组,我们的数据框具有不同的灰度:

Group <- c(1,1,1,1,2,2,2,2,3,3,3,3)
Year <- c(2006,2007,2008,2009,2006,2007,2008,2009,2006,2007,2008,2009)
Qtr.1 <- as.numeric(c(15,13,22,13,12,16,13,23,11,15,17,14))
DF <- data.frame(Group,Year,Qtr.1)

#to get HEX for each unique input
c <- grey(1:length(unique(DF$Group))/length(unique(DF$Group)))

c
> [1] "#555555" "#AAAAAA" "#FFFFFF"

 #Without Grey
plot(DF$Year,DF$Qtr.1)

#With Grey
plot(DF$Year,DF$Qtr.1, col = c[Group])

请注意,我没有选择生成的灰色十六进制代码,并且第3组的十六进制代码是如此微弱,很难被发现。另外,我们需要在Group参数的末尾在col上建立索引。正如其他人已经提到的那样,解决此问题的方法可能比灰度和基本图函数更好。对于自定义可视化(例如ggplot或其他人指出的内容),寻找其他软件包可能是更好的选择。

选中此不错的summary,以获取有关col的更多信息