前(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:
17 comments
你竟然也加入Typecho邪教大军了,没爱了
没有,我现在是脚踏两只船
渣男,你应该开301跳转啊
怎么个跳法?
涨芝士了,HSTS是比HTTPS更安全的策略机制
你怎么把我友链下了
(刚刚评论报错了,哈哈哈哈哈哈哈哈哈啊哈哈,艹又报错了)
老站没有下,新站只是还没有来得及加而已
有空可以在左侧菜单栏里面的“朋友”一栏,重新发送一下友链信息
对的,就是这个意思
:huaji: 咋换香港了,备案掉了?
主要是香港便宜 :weiqu:
该加个https了
哈哈,终于还是全站加上了https,果然舒服极了
的确该加了,哈哈。
对了哦,有没有推荐? :yi:
Let's Encrypt泛域名,好像三个月一次,可以自己续签??我是用铁门塞克的DV ssl版,一年签一次. :yinxian:
3Q,有空我也去搞个HTTPS玩玩 :tushe: