使用geojson文件绘制choropleth映射。
choropleth-geojson的Python项目详细描述
choropleth geojson
模块的灵感来自于http://vincepota.com/plotly_choropleth_map.html和https://github.com/vincepota/plotly_choropleth_tutorial上的工作。
该模块允许从兼容的geojson文件绘制choropleth映射。要检查geojson文件的兼容性,可以将该文件上载到http://geojson.io/#map=2/20.0/0.0。如果与geojson文件上的坐标对应的映射区域被着色,则geojson文件可与此模块一起使用。有关兼容geojson文件的示例,请参阅文档末尾。该模块还需要来自mapbox的api密钥。可以从https://docs.mapbox.com/help/how-mapbox-works/access-tokens/免费获得api密钥。
choropleth地图是类似热图的地理图。它显示一个感兴趣的区域,子区域为彩色。颜色强度由每个子区域中感兴趣数据的大小决定。例如,假设感兴趣的数据是每个国家的人口,而感兴趣的地区是北美大陆,而次区域是该大陆上的国家。一张choropleth地图将用不同颜色的红色(或不同颜色的选择)来表示每个国家的人口水平。从浅红色到人口最少的国家,再到深红色到人口最多的国家。
假设人口数据保存到pandas数据框中的某一列中,索引表示每个国家,并且有一个兼容的geojson文件表示每个国家的坐标。然后,绘制choropleth映射的最小工作示例如下所示,
import choropleth_geojson as cg
import pandas as pd
import json
import plotly.offline as offline
apikey = 'my_mapbox_apikey123alpha890'
df = pd.read_csv('population_data.csv', index_col = 0)
with open(r'north_america.json') as f:
geojson = json.load(f)
northamerica = cg.choropleth(apikey, df, geojson, 'Country')
fig = northamerica.choroplot()
offline.plot(fig, auto_open=True)
更多示例可以在https://github.com/QuantStats/choropleth_geojson上找到,或者单击主页按钮导航到github存储库。
下面是一个兼容的geojson文件的示例,请注意,此模块只支持“polygon”或“multipolygon”几何类型,
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Subregion1"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-75.9375,
36.87962060502676
],
[
-82.265625,
37.16031654673677
],
[
-82.08984375,
33.578014746143985
],
[
-75.9375,
36.87962060502676
]
]
]
}
},
{
"type": "Feature",
"properties": {
"name": "Subregion2"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-81.9580078125,
26.43122806450644
],
[
-81.4306640625,
25.60190226111573
],
[
-80.68359375,
26.15543796871355
],
[
-81.9580078125,
26.43122806450644
]
],
[
[
-81.9140625,
27.449790329784214
],
[
-82.3974609375,
27.0982539061379
],
[
-81.6064453125,
26.82407078047018
],
[
-81.9140625,
27.449790329784214
]
]
]
]
}
}
]
}