首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我希望tm_fill()是一个来自新对象的变量,该如何指定它?

如果我希望tm_fill()是一个来自新对象的变量,该如何指定它?
EN

Stack Overflow用户
提问于 2020-12-26 18:57:55
回答 1查看 32关注 0票数 1

我正在尝试创建一个R函数,它将在用户从Spatial Polygons数据框中指定的变量上运行GWR。运行该函数的最终结果是两个映射-一个是自变量的值,另一个是来自GWR模型的系数值。我看不懂第二张地图。

我已经设法为我将要可视化的系数创建了GWR模型和一个'results‘对象。

代码语言:javascript
复制
  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()函数,如下所示:

代码语言:javascript
复制
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参数既不是颜色,也不是有效的变量名。

如果有任何建议能帮助我解决这个问题,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-01-10 17:28:41

切换到sf包-留下sp -可能会在这里解决您的问题。

在没有可重现的例子的情况下,让我试着在这里建议如下:用gwr.map.sf <- sf::st_as_sf(gwr.map)转换你的结果。然后简单地将GWR的结果添加为一个新列:gwr.map$results <- results (我的理解是尺寸应该适合)。

最后,您应该能够像这样绘制:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65455697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档