如何解决如果我希望它是来自新对象的变量,如何指定 tm_fill()?
我正在尝试创建一个 R 函数,该函数将对用户从空间多边形数据帧指定的变量运行 GWR。运行该函数的最终结果是两个映射 - 自变量值之一和来自 GWR 模型的系数值之一。第二张地图有问题。
我已经成功地为我要可视化的系数创建了 GWR 模型和“结果”对象。
gwr.model <- gwr(SpatialPolygonsDataFrame@data[,y] ~ SpatialPolygonsDataFrame@data[,x],data = SpatialPolygonsDataFrame,adapt = GWRbandwidth,hatmatrix = TRUE,se.fit = TRUE)
results <- as.data.frame(gwr.model$SDF)
gwr.map <- SpatialPolygonsDataFrame
gwr.map@data <- cbind(SpatialPolygonsDataFrame@data,as.matrix(results))
要创建 GWR 系数的可视化,我必须将 tm_fill()
指定为“results”对象中的一列,但我不知道如何操作,以便可以使用该函数任何空间多边形数据框。到目前为止,我已经尝试使用 paste0()
函数,如下所示:
map2 <- tm_shape(gwr.map) + tm_fill(paste0("SpatialPolygonsDataFrame.",x),n = 5,style = "quantile",title = "Coefficient") +
tm_layout(frame = FALSE,legend.text.size = 0.5,legend.title.size = 0.6)
但我收到一个错误,提示 fill 参数既不是颜色也不是有效的变量名。
如果您提供任何可以帮助我解决问题的提示,我将不胜感激。
解决方法
切换到包 sf
- 留下 sp
- 可能会在这里解决您的问题。
在没有可重现的示例的情况下,让我尝试在这里提出以下建议:
使用 gwr.map.sf <- sf::st_as_sf(gwr.map)
转换您的结果。然后将 GWR 的结果简单地添加为一个新列:gwr.map$results <- results
(我的理解是尺寸应该适合)。
最后你应该能够像这样绘制:
map2 <- tm_shape(gwr.map.sf) + tm_fill("results",n = 5,style = "quantile",title = "Coefficient") +
tm_layout(frame = FALSE,legend.text.size = 0.5,legend.title.size = 0.6)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。