echarts地图罗平县的json_用Python绘制中国疫情地图(二)——Pyecharts篇

笔者之前写过一篇用plotly绘制疫情地图的文章,今天就介绍一下另外一种方法,用pyecharts画疫情地图的方法。

之前写过的Plotly画图的那篇文章中,笔者曾提过plotly是一个基于D3.js的Python库,plotly相当于一个操作层,让用户能用Python的方式操作D3,这对于不会JavaScript的用户是一个很大的便利。而今天介绍的pyecharts和plotly类似,也是用Python的方式来操作echarts,而echarts是和D3类似的一个js图库,其和D3功能上类似,但却是咱们中国人自己开发的(百度开发的),笔者写这篇文章的主要目的之一也是要介绍一下咱们自己的echarts/pyecharts。

下面就介绍一下如何用pyecharts绘制全国疫情地图。刚开始先给大家提个醒,安装pyecharts要用pip install pyecharts命令,目前暂不支持anaconda的conda install命令,笔者用的是anaconda最新版。

首先导入需要的包和准备数据。

from pyecharts import options as optsfrom pyecharts.charts import Mapnums = [59989, 1328, 1257, 1172, 1007, 982, 933, 629, 553, 543, 508, 464, 387, 333, 302, 292, 242, 240, 172, 163, 146, 130, 127, 121, 91, 89, 76, 73, 70, 61, 22, 18, 10, 1]provinces = ['湖北', '广东', '河南', '浙江', '湖南', '安徽', '江西', '江苏', '重庆', '山东', '四川', '黑龙江', '北京', '上海', '河北', '福建', '广西', '陕西', '云南', '海南', '贵州', '山西', '天津', '辽宁', '甘肃', '吉林', '新疆', '内蒙古', '宁夏', '香港', '台湾', '青海', '澳门', '西藏']sequence = [(a,b) for a,b in zip(provinces,nums)]

这里有3个变量,nums是全国各省确诊人数,provinces是各省名称,sequence是将两者对应起来的一个list。接下来就是绘图部分。

mymap = Map()mymap.add(series_name='中国最新疫情地图', data_pair=sequence, maptype='china')mymap.set_global_opts(visualmap_opts=opts.VisualMapOpts(pieces=[{"min": 1, "max": 9, "label": "1-9", "color": 'lightcoral'},{"min": 10, "max": 99, "label": "10-99", "color": 'indianred'},{"min": 100, "max":999, "label": "100-999", "color": 'brown'},{"min": 1000, "max": 9999, "label": "1000-9999", "color": 'firebrick'},{"min": 10000, "max": 60000, "label": "≥10000", "color": 'darkred'}],is_piecewise=True))mymap.render('render.html')

OK了,是不是so easy。我们可以看到pyecharts和plotly类似,甚至更简单,其自带中国地图数据,不需要额外的地理(坐标)数据,而plotly则需要(上一篇文章中,plotly需要一个json格式的地理文件),当然pyecharts也支持json地理数据,比如本例中我们可以用mymap.add_coordinate_json('放入相关数据')来读取地理数据。这里有几点要说明一下,首先是地图的变量名不要用map,因为这是Python自带的关键字,容易出错。其次是visualmap_opts=opts.VisualMapOpts(pieces=[...])这一大堆,在官方文档中并未说明opts.VisualMapOpts的具体用法,其有很多参数,pieces只是其中之一,这部分用法需要大家认真研究一下,这部分用法我在官方文档中都没搞清楚,还是后来百度一下,才从别人的例子中了解了。最后就是mymap.render('render.html')会生成一个网页文件,打开这个网页就能看到我们绘制的图片,是交互式的,pyecharts是可以生成静态图片的(具体方法留给大家自己去学习),但生成网页文件可以更好地交互操作。下面把pyecharts绘制的图片和百度官方原图对比一下,两者都是GIF动图。

caa614c5ca22d3e60536f5dd33394cde.gif

图1. pyecharts绘制的图片

abdf056a04a6c31d23c8cd4e8da8e2dd.gif

图2. 百度官方原图

笔者目前已经写了3篇绘制地图的文章了,现在做一个小小的总结吧。我们把每种方法的评价分为好、中、差三个档次,我个人对这3中方法的具体评价如下图。在图中我对pyecharts给了很高的评价,只给其社区支持打了差评,因为其官方文档让我忍无可忍,没办法,因为这个项目目前仅有3个人在维持,而且还是民间组织。希望有热情和时间的开发者能多贡献自己的一份力量,尤其是咱们中国自己的开发项目。

26f0c3848bae92c4777b7a5d477c6b72.png

图3. Python的3种绘图方法对比

除了这3种方法,Python还有其他很多好的绘制地图的方法,比如folium、geopandas以及非常出名的bokeh,这些也就留给大家自己去学习吧。最后还是那句话吧,"武汉加油,中国加油"!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值