前(fei)言(hua):疫情期间,偶然间看到了支付宝里面的全国疫情实时数据,就准备自己也做出来练习一下

效果展示

数据来源

腾讯新冠肺炎疫情最新动态

创建web目录

[root@shuai ~]# cd $web     # 网站根目录
[root@shuai shuai]# mkdir -p yiqing/{map,bar,log}
[root@shuai shuai]# cd yiqing/
[root@shuai shuai]# vim yiqing.py

实现代码

import json
import requests
from pyecharts import Map, Bar

url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
# 获取网页数据
res = requests.get(url)
# 先转换为json类型,然后转换为字典
data = json.loads(res.json()['data'])
# 中国各省份疫情信息
china_info = data['areaTree'][0]['children']
# 获取每个城市的总确诊人数
area, confirm_num, dead_num, heal_num = [], [], [], []
for i in range(len(china_info)):
    area.append(china_info[i]['name'])                          # 地区
    confirm_num.append(china_info[i]['total']['confirm'])       # 确诊人数
    dead_num.append(china_info[i]['total']['dead'])             # 死亡人数
    heal_num.append(china_info[i]['total']['heal'])             # 治愈人数
# 生成地图
maps = Map('全国疫情分布热力图', width=1500, height=900)     # 设置地图的宽和高
# 把数据添加到地图中
maps.add('', area, confirm_num, maptype='china', is_visualmap=True, visual_text_color='#000',
         is_label_show=True, visual_range=[0, 1500])
maps.render('$web/yiqing/map/index.html')       # 生成HTML文件

# 生成柱状图
# 设置标题,副标题
bar = Bar('全国疫情分布柱状统计图', '中国')
# 设置图表宽和高
bar.width = 1600
bar.height = 800
# 添加图表数据和设置项
bar.add('确诊人数', area, confirm_num, mark_point=['max', 'min'], is_more_utils=True)
bar.add('死亡人数', area, dead_num, mark_point=['max', 'min'], is_more_utils=True)
bar.add('治愈人数', area, heal_num, mark_point=['max', 'min'], is_more_utils=True)
bar.render('$web/yiqing/bar/index.html')        # 生成HTML文件

计划任务

# 每10分钟执行一次
[root@shuai yiqing]# crontab -e
*/10 * * * * /usr/local/bin/python3 网站根目录/yiqing/yiqing.py >> 网站根目录/yiqing/log/run.log 2>&1

踩坑总结

最初代码在Windows运行正常,然后在Linux运行的时候就一直报错。最后发现都是pyecharts的版本问题 :hu:

  • pyecharts报错:ImportError: cannot import name 'Map' from 'pyecharts'

安装时未指定版本,直接使用以下命令进行安装:

pip3 install pyecharts

就会默认安装pyecharts 1.2.0版本,最后查了Github才知道这个版本更新了调用方式
然后尝试修改调用方式

from pyecharts.charts import Map, bar

 

结果pyecharts又出现了如下报错 :jiku:

  • pyecharts报错:TypeError: __init__() got an unexpected keyword argument 'width'

然后通过百度得知,只要安装指定的pyecharts版本就可以解决了,于是

pip3 install pyecharts==0.1.9.4

然后再把调用方式在修改回原来的

from pyecharts import Map, Bar

以后就好了 :haha:

Last modification:September 29th, 2020 at 03:16 pm
如果觉得我的文章对你有用,请随意赞赏