1

我正在尝试创建一个 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 系数的可视化,我必须将 my 指定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)

但是我收到一个错误,说填充参数既不是颜色也不是有效的变量名。

我将不胜感激任何可以帮助我解决问题的提示。

4

1 回答 1

0

切换到包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)
于 2021-01-10T09:28:40.627 回答