python中进行图表绘制的库主要有两个:matplotlib 和 pyecharts, 相比较而言:
matplotlib中提供了BaseMap可以用于地图的绘制,但是个人觉得其绘制的地图不太美观,而且安装相较而言有点麻烦。
pyecharts是基于百度开源的js库echarts而来,其最大的特点是:安装简单、使用也简单。
所以决定使用pyecharts来绘制地图。
1.安装pyecharts
如果有anaconda环境,可用 pip install pyecharts 命令安装pyecharts。
由于我们要绘制中国的疫情地图,所以还要额外下载几个地图。地图文件被分成了三个Python包,分别为:
全球国家地图: echarts-countries-pypkg
安装命令:pip install echarts-countries-pypkg
中国省级地图: echarts-china-provinces-pypkg
安装命令:pip install echarts-china-provinces-pypkg
中国市级地图: echarts-china-cities-pypkg
安装命令:pip install echarts-china-cities-pypkg
2.导包。
绘制地图时我们根据自己需要导入需要的包,在pyecharts的官方文档 https://pyecharts.org/#/ 中详细列出了绘制各种图表的的方法及参数含义,而且提供了各种图标的demo,方便我们更好地使用pyecharts。
from pyecharts.charts import Map from pyecharts import options as opts
3.代码
# 用于保存城市名称和确诊人数 map_data = [] for i in china : print(i) # 获得省份名称 province = i["name"] print("province:",province) province_confirm = i["total"]["confirm"] # 保存省份名称和该省确诊人数 map_data.append((i["name"],province_confirm)) c = ( # 声明一个map对象 Map() # 添加数据 .add("确诊", map_data, "china") # 设置标题和颜色 .set_global_opts(title_opts=opts.TitleOpts(title="全国疫情图"), visualmap_opts=opts.VisualMapOpts(split_number=6,is_piecewise=True, pieces=[{"min":1,"max":9,"label":"1-9人","color":"#ffefd7"}, {"min":10,"max":99,"label":"10-99人","color":"#ffd2a0"}, {"min":100,"max":499,"label":"100-499人","color":"#fe8664"}, {"min":500,"max":999,"label":"500-999人","color":"#e64b47"}, {"min":1000,"max":9999,"label":"1000-9999人","color":"#c91014"}, {"min":10000,"label":"10000人及以上","color":"#9c0a0d"} ])) ) # 生成html文件 c.render("全国实时疫情.html")
运行成功后就可以在工程目录下发现一个名为“全国实时疫情”的html文件,打开就可以看到我们绘制的疫情图啦!!
全部代码(包含保存到数据库,爬取数据、绘制疫情图):
#!/usr/bin/env python # -*- coding: utf-8 -*- import json import requests import pymysql # 装了anaconda的可以pip install pyecharts安装pyecharts from pyecharts.charts import Map,Geo from pyecharts import options as opts from pyecharts.globals import GeoType,RenderType # 绘图包参加网址https://pyecharts.org/#/zh-cn/geography_charts id = 432 coon = pymysql.connect(user='root', password='root', host='127.0.0.1', port=3306, database='yiqing',use_unicode=True, charset="utf8") cursor = coon.cursor() url="https://view.inews.qq.com/g2/getOnsInfo" resp=requests.get(url) html=resp.json() data=json.loads(html["data"]) time = data["lastUpdateTime"] data_info = time.split(' ')[0] detail_time = time.split(' ')[1] # 获取json数据的全国省份疫情情况数据 china=data["areaTree"][0]["children"] # 用于保存城市名称和确诊人数 map_data = [] for i in china : print(i) # 获得省份名称 province = i["name"] print("province:",province) province_confirm = i["total"]["confirm"] # 保存省份名称和该省确诊人数 map_data.append((i["name"],province_confirm)) # 各省份下有各市,获取各市的疫情数据 for child in i["children"]: print(child) # 获取城市名称 city = child["name"] print("city:",city) # 获取确诊人数 confirm = int(child["total"]["confirm"]) # 获取疑似人数 suspect = int(child["total"]["suspect"]) # 获取死亡人数 dead = int(child["total"]["dead"]) # 获取治愈人数 heal = int(child["total"]["heal"]) # 插入数据库中 cursor.execute("INSERT INTO city(id,city,confirm,suspect,dead,heal,province,date_info,detail_time) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)", (id, city, confirm, suspect, dead, heal, province, data_info, detail_time)) id = id + 1 coon.commit() c = ( # 声明一个map对象 Map() # 添加数据 .add("确诊", map_data, "china") # 设置标题和颜色 .set_global_opts(title_opts=opts.TitleOpts(title="全国疫情图"), visualmap_opts=opts.VisualMapOpts(split_number=6,is_piecewise=True, pieces=[{"min":1,"max":9,"label":"1-9人","color":"#ffefd7"}, {"min":10,"max":99,"label":"10-99人","color":"#ffd2a0"}, {"min":100,"max":499,"label":"100-499人","color":"#fe8664"}, {"min":500,"max":999,"label":"500-999人","color":"#e64b47"}, {"min":1000,"max":9999,"label":"1000-9999人","color":"#c91014"}, {"min":10000,"label":"10000人及以上","color":"#9c0a0d"} ])) ) # 生成html文件 c.render("全国实时疫情.html") # # china_total="确诊" + str(data["chinaTotal"]["confirm"])+ "疑似" + str(data["chinaTotal"]["suspect"])+ "死亡" + str(data["chinaTotal"]["dead"]) + "治愈" + str(data["chinaTotal"]["heal"]) + "更新日期" + data["lastUpdateTime"] # print(china_total)
以上就是python如何绘制疫情图的详细内容,更多关于python绘制疫情图的资料请关注其它相关文章!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】