45 个回答
Python地图可视化库有大家熟知的pyecharts、plotly、folium,其他回答都有介绍,还有稍低调的bokeh、basemap、geopandas,也是地图可视化的利器。
首先介绍下bokeh
bokeh擅长制作交互式图表,当然在地图展示方面也毫不逊色。
Bokeh支持google地图、geojson数据的地理可视化展示,关键是可以动态交互。
Bokeh官网提供了详细的地图可视化方案,感兴趣的把示例代码拉出来跑一跑。
https:// docs.bokeh.org/en/lates t/docs/user_guide/geo.html
还有诸如github、牛客网上也有很多可视化的案例,可以试试
牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网
basemap是专业的地理信息可视化库
可以毫不夸张的说,basemap是python地图可视化最牛逼的第三方库,没有之一。
basemap基于matplotlib开发,所以它具有创建数据可视化的所有功能,必须配合matplotlib使用。
只需要几行代码就可以画一张世界地图:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
map = Basemap()
map.drawcoastlines()
plt.show()
plt.savefig('test.png')
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
map = Basemap(projection='ortho',
lat_0=0, lon_0=0)
#Fill the globe with a blue color
map.drawmapboundary(fill_color='aqua')
#Fill the continents with the land color
map.fillcontinents(color='coral',lake_color='aqua')
map.drawcoastlines()
plt.show()
由于basemap无所不能的绘图能力,你还可以画:
风勾图
轮廓图
填充轮廓图
伪彩色图
地理标记
矢量场流线图
实景地图
多子图地图
3D地图
注:评论里提醒,由于basemap支持py2,而py2已经停止维护,所以basemap也被matplotlib放弃了。取而代之的是cartopy ,支持py3,完美结合matplotlib。
最后说说geopandas
geopandas,顾名思义是基于pandas的地图可视化工具,所以它对地理数据的处理非常方便。
推荐大家将geopandas作为地理信息数据处理的主要工具。
之前写过一个geopandas的入门教程,供大家参考:
配合使用matplotlib,很简单的代码就可以画出漂亮的地图:
推荐一个地图可视化神器:pyecharts
pyecharts是什么?
是一个用于生成 Echarts 图表的类库,Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。
使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。
PS:百度地图今年的审图号是“GS(2018)5572号”,符合标准地图规范,而且这个渲染效果比有些基础的标准地图可能更炫酷一点。
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)]