首页 > 解决方案 > 绘图 shapefile 变量:错误无效灰度级,必须在 [0,1] 中。R

问题描述

我有一个 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"’

标签: rregression

解决方案


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

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

请注意,我没有选择生成的灰色 HEX 代码,并且第 3 组的 HEX 代码非常微弱,很难发现。此外,我们需要Group在参数的末尾进行索引col。正如其他人所提到的,可能有比灰度和基本绘图功能更好的方法来解决这个问题。寻找其他包可能是定制可视化的更好选择(即 ggplot 或其他人注意到的)。

查看这个不错的摘要以获取更多信息col


推荐阅读