Python 如何画出漂亮的地图?

关注者
3,674
被浏览
1,832,994

45 个回答

推荐一个地图可视化神器:pyecharts

pyecharts是什么?

是一个用于生成 Echarts 图表的类库,Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。

使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。

PS:百度地图今年的审图号是“GS(2018)5572号”,符合标准地图规范,而且这个渲染效果比有些基础的标准地图可能更炫酷一点。

https://echarts.baidu.com/examples/editor.html?c=map-polygon

1、安装:pip install pyecharts

2、可以参考pyecharts官方文档

3、注意pyecharts v0.3.2以后,pyecharts不再自带地图 js 文件。

如用户需要用到地图图表,可自行安装对应的地图文件包。

地图文件的三个Python包分别为:

全球地图:echarts-countries-pypkg

中国与省级地图:echarts-china-provinces-pypkg

市级地图:echarts-china-cities-pypkg

安装方法参考步骤1,直接使用python的pip安装

4、可以使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可,同时兼容 Python2 和 Python3 的 Jupyter Notebook 环境。所有图表均可正常显示,与浏览器一致的交互体验。新版本的Anaconda3自带Jupyter Notebook。

5、安装完地图包以后要重启jupyter notebook,不然是无法显示地图的。

6、Echarts通用的配置项:

xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline)

dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)

legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。

lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)

grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)

visualMap:是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)

markLine&markPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline)

tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容

toolbox:右侧实用工具箱

7、示例代码如下:

from pyecharts import Geo
data = [
("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25)]