gpt4 book ai didi

r - R/Leaflet 中的 TopoJSON choropleth?

转载 作者:行者123 更新时间:2023-12-04 11:22:44 24 4
gpt4 key购买 nike

是否可以使用 R/leaflet 从其功能为 choropleth 设置 TopoJSON 文件的样式?尝试了一些东西,我不确定 leaflet 是否不可能包或者我只是没有正确的语法,尤其是访问属性以输入 pal()功能。这是我所拥有的:

pal<-colorNumeric(palette ="YlOrRd",domain = USAdata$GINI) #USAdata data frame I merged with the spdf before converting it to shp/topojson

map<-leaflet() %>%
addTiles(options=tileOptions(minZoom = 3)) %>%
setMaxBounds(-167.276413,5.499550,-52.233040, 83.162102) %>%
setView(93.85,37.45,zoom =3) %>%
#addGeoJSON(geojson = jso5)
addTopoJSON(topojson=jso, fillColor = ~pal("GINI"))
#addPolygons(data=poly)

这会引发错误:
"Error in UseMethod("doResolveFormula") : 
no applicable method for 'doResolveFormula' applied to an object of class "NULL""

我还尝试使用 fromJSON() 将其转换为 topojson 的 R 对象并添加样式元素,但是在我尝试使用 toJSON() 将其发送回后,这不会加载。

不确定是否相关,但 topojson 是从按照说明制作的 shapefile 创建的 here :

与 cl:
topojson -o 'USApuma.json' --shapefile-encoding utf8 --id-property=+GEOID10 -p GINI,+STATEFP10,+GEOID10 -- 'usaetest.shp'

然后阅读 readLines() .

最终试图将其放入一个 Shiny 的应用程序中。这是 some我去过的例子 following .

最佳答案

你需要使用 TopoJSON 吗?如果不考虑使用底格里斯河 包(披露:我创建并维护了包)。它可以让您访问几乎任何您需要的人口普查地理数据集,并且可以很好地与 配合使用。传单 .这是一个符合您正在做的事情的简短示例。例如,您可以使用以下代码获取美国大陆的所有 PUMA:

library(readr)
library(tigris)
library(leaflet)

us_states <- unique(fips_codes$state)[1:51]

continental_states <- us_states[!us_states %in% c("AK", "HI")]

pumas_list <- lapply(continental_states, function(x) {
pumas(state = x, cb = TRUE)
})

us_pumas <- rbind_tigris(pumas_list)

我已经生成了一个样本数据集,用于衡量这个例子中的 PUMA 家庭收入中位数; geo_join来自 的函数底格里斯河 包可以将数据集合并到空间数据框 us_pumas :
puma_income <- read_csv('http://personal.tcu.edu/kylewalker/data/puma_income.csv')

joined_pumas <- geo_join(us_pumas, puma_income, 'GEOID10', 'GEOID')

然后我们可以用 Leaflet 绘图:
pal <- colorQuantile(palette = 'YlOrRd', domain = joined_pumas$hhincome, n = 7)

leaflet(joined_pumas) %>%
addProviderTiles('CartoDB.Positron') %>%
addPolygons(weight = 0.5, fillColor = ~pal(hhincome),
color = 'lightgrey', fillOpacity = 0.75,
smoothFactor = 0.2) %>%
addLegend(pal = pal,
values = joined_pumas$hhincome)

PUMA median household income

如果您打算构建一个 Shiny 应用程序,我建议您保存从 获得的 PUMAs。底格里斯河 首先作为 .rda文件并使用您的 Shiny 脚本读取它,这样您就不必 rbind_tigris每次。

关于r - R/Leaflet 中的 TopoJSON choropleth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34248126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com