使用geojson文件绘制choropleth映射。

choropleth-geojson的Python项目详细描述


choropleth geojson

模块的灵感来自于http://vincepota.com/plotly_choropleth_map.htmlhttps://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
				]
			    ]

		    ]
        ]
      }
    }

  ]
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish