json - jupyter上的folium空白等值线图,可能的JSON格式问题
问题描述
我一直在积极尝试找出为什么在尝试在 folium 上生成等值线图时在我的 Jupyter 笔记本上得到一张空白地图。这也是我的第一篇文章,因为我对编程还很陌生。
通过搜索在线资源,最常见的问题是不正确的 key_on 用法,但我不认为是这种情况,它可能是 JSON 格式与 folium(epsg=4326)不正确。
https://raw.githubusercontent.com/CyperPunk001/Immigration-to-CA-from-RSA/master/canada_provinces.geojson 这是我用于笔记本的 github 存储库中的 JSON 文件,我不确定这是什么格式是?
加拿大 COVID 19 案例这是我在笔记本上用于 folium 的当前数据框。
choropleth 地图的叶代码这是我用来生成活动 COVID 19 病例与省/地区的 choropleth 地图的当前叶代码。问题是我每次都会得到一张空白地图。
到目前为止我已经尝试过:
导入 Json 并将我的数据框“prname”列名替换为实际的 Json feature.properties.name 省/地区名称。这并没有解决我的问题。
将“prname”重命名为“name”。这并没有解决我的问题。
检查“name”、“numactive”列的 dtype 是否是正确的类型,这检查出来了,这不是他的问题吗?数据框的dtypes
这让我看看我导入的 JSON 文件的格式是否与 folium 不兼容,所以我尝试导入 geopandas,或者更确切地说是安装,但可惜我也经常遇到导入错误。我已经尝试了所有代码行,但没有运气。geopandas conda 安装
当前 folium 版本 0.11.0
任何帮助将不胜感激。
解决方案
好问题。使用 R 和传单库完成此图。
.geojson 文件没有任何问题。我将您的 .geojson 数据复制并粘贴到记事本文本编辑器中,然后使用 .geojson 扩展名保存它。文件被读取并且文件被绘制没有问题(未显示)。
使用这个 .geojson 文件,我从文件的 @data 槽中名为“name”的变量创建了标签。我还从 @data 插槽中的 X_2012_membership 值创建了填充颜色。
我使用 Jupyter Lab 作为带有 R 内核的 IDE。代码如下:
获取数据,探索数据:
dg <- rgdal::readOGR("C:/python/R_files/test/test.geojson")
# str(dg, max.level = 2)
head(dg@data,2)
head(dg@data$name,2)
创建标签和填充颜色:
labs <- dg@data$name
fill_col <- colorFactor(topo.colors(5), unique(dg@data$X_2012_membership ))
绘制数据:
leaflet(dg) %>%
addPolygons(
fillColor = ~factpal(dg@data$X_2012_membership),
stroke = TRUE,
color = 'White',
weight = 1.5,
label = labs,
labelOptions = labelOptions( noHide = T,
style = list("font-weight" = "normal", padding = "2px 2px"),
textsize = "7px",
direction = "auto"
)
)
链接处的情节: 加拿大
推荐阅读
- macos - 无法使用安装了 macports 的 MPICH mpirun 执行 MPI 程序
- jquery - 检索引导复选框的单击状态
- android - 防止网页链接打开本机应用程序,留在网页浏览器中
- c# - EF Code First-从多到多表返回记录
- ios - Stripe SDK integration using swift and flutter
- java - How can I have fonts inside project and use from project folder in NetBeans IDE?
- node.js - 使用 node-rdkafka 的 Kerberos SASL 身份验证
- html - 一种当设备尺寸较小时,部分将不会被包含在内
- python - API 网关 - 自定义授权方不工作
- python - Python. SQL Alchemy NotImplementedError: Operator 'getitem' is not supported on this expression