python如何绘制疫情图
python中进行图表绘制的库主要有两个:matplotlib和pyecharts,相比较而言:
matplotlib中提供了BaseMap可以用于地图的绘制,但是个人觉得其绘制的地图不太美观,而且安装相较而言有点麻烦。
pyecharts是基于百度开源的js库echarts而来,其最大的特点是:安装简单、使用也简单。
所以决定使用pyecharts来绘制地图。
1.安装pyecharts
如果有anaconda环境,可用pipinstallpyecharts命令安装pyecharts。
由于我们要绘制中国的疫情地图,所以还要额外下载几个地图。地图文件被分成了三个Python包,分别为:
全球国家地图:echarts-countries-pypkg
安装命令:pipinstallecharts-countries-pypkg
中国省级地图:echarts-china-provinces-pypkg
安装命令:pipinstallecharts-china-provinces-pypkg
中国市级地图:echarts-china-cities-pypkg
安装命令:pipinstallecharts-china-cities-pypkg
2.导包。
绘制地图时我们根据自己需要导入需要的包,在pyecharts的官方文档https://pyecharts.org/#/中详细列出了绘制各种图表的的方法及参数含义,而且提供了各种图标的demo,方便我们更好地使用pyecharts。
frompyecharts.chartsimportMap frompyechartsimportoptionsasopts
3.代码
#用于保存城市名称和确诊人数
map_data=[]
foriinchina:
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/envpython
#-*-coding:utf-8-*-
importjson
importrequests
importpymysql
#装了anaconda的可以pipinstallpyecharts安装pyecharts
frompyecharts.chartsimportMap,Geo
frompyechartsimportoptionsasopts
frompyecharts.globalsimportGeoType,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?name=disease_h5"
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=[]
foriinchina:
print(i)
#获得省份名称
province=i["name"]
print("province:",province)
province_confirm=i["total"]["confirm"]
#保存省份名称和该省确诊人数
map_data.append((i["name"],province_confirm))
#各省份下有各市,获取各市的疫情数据
forchildini["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("INSERTINTOcity(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绘制疫情图的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。