我正在尝试创建一个R函数,它将在用户从Spatial Polygons数据框中指定的变量上运行GWR。运行该函数的最终结果是两个映射-一个是自变量的值,另一个是来自GWR模型的系数值。我看不懂第二张地图。
我已经设法为我将要可视化的系数创建了GWR模型和一个'results‘对象。
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()’对象中的一列,但我不知道如何做,以便该函数可用于任何空间多边形数据框。到目前为止,我已经尝试使用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参数既不是颜色,也不是有效的变量名。
如果有任何建议能帮助我解决这个问题,我将不胜感激。
发布于 2021-01-10 17:28:41
切换到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)https://stackoverflow.com/questions/65455697
复制相似问题