r - 绘图 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"’
解决方案
col = grey()
根据放置在其中的值生成灰度的十六进制代码。是的,这些数字应该在 0:1 之间。如果您尝试为每个唯一残差获取单独的灰色 HEX 代码,您可以使用length
andunique
函数来实现。下面是一个示例,其中每个组都有不同的灰度是我们的数据框:
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
推荐阅读
- sql - 如何使用 PostgreSQL 计算分层定价
- python - 忽略 flake8 检查带有反斜杠的代码
- python - python异步发布请求
- java - 为什么 JavaFX 图像不直接从 FileInputStream 读取文件本身?
- macos - 如果我使用 npm 启动它,如何杀死 webpack 服务?(ps aux | grep webpack 每次都不一样)
- ruby - Ruby 继续递归
- ecmascript-6 - 将值与两个 javascript 对象进行比较的最佳方法
- node.js - 启动节点应用程序时出现 EADDRINUSE Heroku 错误
- ruby-on-rails - Rails 路由:将特定的控制器操作设置为不同的路径
- sql - PostgreSQL 将月份字符串转换为月份的开始和结束日期