Folium choropleth 根本没有给邮政编码区域着色
Folium choropleth not colorizing ZIP code areas at all
我正在使用 Folium 按邮政编码生成收入报告,以确定在哪里设立新办事处。
虽然 geoJSON 似乎正确地覆盖在地图上,但它似乎并未将收入金额热映射到各自的邮政编码。
JSON文件中的特征名称是feature.properties.ZCTA5CE10
如此处所示,在文件的前几行中。 ZCTA5CE10 对应邮政编码。这是 GitHub 上 GeoJSON 文件的 link。 https://github.com/OpenDataDE/State-zip-code-GeoJSON/blob/master/tx_texas_zip_codes_geo.min.json
{"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":
{"STATEFP10":"48","ZCTA5CE10":"75801","GEOID10":"4875801","CLASSFP10":"B5","MTFCC10":"G6350","FUNCSTAT10":"S","ALAND10":555807428,"AWATER10":6484251,"INTPTLAT10":"+31.7345202","INTPTLON10":"-095.5313809","PARTFLG10":"N"},"geometry":{"type":"Polygon","coordinates":[[[-95.680719,31.727999]
我的收入数据是一个包含 2 列的 CSV 文件,ZIP CODE 和 AUGUST。
CSV 示例:
ZCTA5CE10,AUGUST
"76701",2676.89
"76643",8625.79
"76655",5618
"76710",23265.18
"76708",14618.35
"76706",14335.85
"76705",9338.44
"76633",4215.39
"76712",35488.02
"76657",10186.13
"76664",1361
"76711",2812.35
"76682",713
最后,我的代码。
import folium
from folium.plugins import MarkerCluster
import pandas as pd
import os
map = folium.Map(location=[31.5493, -97.1467],
default_zoom_start=15)
revdata = pd.read_csv(os.path.join('revenue.csv'))
revdata.info()
folium.Choropleth(geo_data="tx_texas_zip_codes_geo.min.json",
data = revdata,
columns = ['ZIP CODE', 'AUGUST'],
key_on = 'feature.properties.ZCTA5CE10',
fill_color='BuPu', fill_opacity=0.7, line_opacity = 0.2,
legend_name = 'REVENUE BY ZIP').add_to(map)
marker_cluster = MarkerCluster().add_to(map)
map.save('mymap.html')
我试过更改我的 CSV 文件中的邮政编码以在它们周围加上引号,但这并没有改变任何东西。
想法?
我已经意识到问题所在了。
当时 revdata.info
我看到无论第一列上的引号如何,该列都被导入为整数类型。我将我的 CSV 读取行更新为 revdata = pd.read_csv(os.path.join('revenue.csv'), dtype={'ZCTA5CE10': object})
,特别指出第一列需要作为字符串文字导入,这样可以将其与 GeoJSON 中的邮政编码进行正确比较。
除此之外,我使用 PyGeoJ 清理我的主要 GeoJSON 文件,以排除我的收入报告中所有未使用的邮政编码(这将我的最终地图 html 大小从 87mb 减少到 2.3)。
我正在使用 Folium 按邮政编码生成收入报告,以确定在哪里设立新办事处。
虽然 geoJSON 似乎正确地覆盖在地图上,但它似乎并未将收入金额热映射到各自的邮政编码。
JSON文件中的特征名称是feature.properties.ZCTA5CE10
如此处所示,在文件的前几行中。 ZCTA5CE10 对应邮政编码。这是 GitHub 上 GeoJSON 文件的 link。 https://github.com/OpenDataDE/State-zip-code-GeoJSON/blob/master/tx_texas_zip_codes_geo.min.json
{"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":
{"STATEFP10":"48","ZCTA5CE10":"75801","GEOID10":"4875801","CLASSFP10":"B5","MTFCC10":"G6350","FUNCSTAT10":"S","ALAND10":555807428,"AWATER10":6484251,"INTPTLAT10":"+31.7345202","INTPTLON10":"-095.5313809","PARTFLG10":"N"},"geometry":{"type":"Polygon","coordinates":[[[-95.680719,31.727999]
我的收入数据是一个包含 2 列的 CSV 文件,ZIP CODE 和 AUGUST。
CSV 示例:
ZCTA5CE10,AUGUST
"76701",2676.89
"76643",8625.79
"76655",5618
"76710",23265.18
"76708",14618.35
"76706",14335.85
"76705",9338.44
"76633",4215.39
"76712",35488.02
"76657",10186.13
"76664",1361
"76711",2812.35
"76682",713
最后,我的代码。
import folium
from folium.plugins import MarkerCluster
import pandas as pd
import os
map = folium.Map(location=[31.5493, -97.1467],
default_zoom_start=15)
revdata = pd.read_csv(os.path.join('revenue.csv'))
revdata.info()
folium.Choropleth(geo_data="tx_texas_zip_codes_geo.min.json",
data = revdata,
columns = ['ZIP CODE', 'AUGUST'],
key_on = 'feature.properties.ZCTA5CE10',
fill_color='BuPu', fill_opacity=0.7, line_opacity = 0.2,
legend_name = 'REVENUE BY ZIP').add_to(map)
marker_cluster = MarkerCluster().add_to(map)
map.save('mymap.html')
我试过更改我的 CSV 文件中的邮政编码以在它们周围加上引号,但这并没有改变任何东西。
想法?
我已经意识到问题所在了。
当时 revdata.info
我看到无论第一列上的引号如何,该列都被导入为整数类型。我将我的 CSV 读取行更新为 revdata = pd.read_csv(os.path.join('revenue.csv'), dtype={'ZCTA5CE10': object})
,特别指出第一列需要作为字符串文字导入,这样可以将其与 GeoJSON 中的邮政编码进行正确比较。
除此之外,我使用 PyGeoJ 清理我的主要 GeoJSON 文件,以排除我的收入报告中所有未使用的邮政编码(这将我的最终地图 html 大小从 87mb 减少到 2.3)。