python如何绘制疫情图


Posted in Python onSeptember 16, 2020

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

python如何绘制疫情图

python如何绘制疫情图

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文件,打开就可以看到我们绘制的疫情图啦!!

python如何绘制疫情图

全部代码(包含保存到数据库,爬取数据、绘制疫情图):

#!/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?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 = []
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绘制疫情图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python 中split 和 strip的实例详解
Jul 12 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
详解python运行三种方式
May 13 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python系列 文件操作的代码
Oct 06 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
对python中arange()和linspace()的区别说明
May 03 Python
PyQt5实现登录页面
May 30 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
python实现简易自习室座位预约系统
Jun 30 Python
如何用Python绘制3D柱形图
Sep 16 #Python
Python Merge函数原理及用法解析
Sep 16 #Python
简单了解Python字典copy与赋值的区别
Sep 16 #Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 #Python
pycharm2020.2 配置使用的方法详解
Sep 16 #Python
python Matplotlib模块的使用
Sep 16 #Python
Python类成员继承重写的实现
Sep 16 #Python
You might like
php 实现301重定向跳转实例代码
2016/07/18 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python mysqldb连接数据库
2009/03/16 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
python中的&&及||的实现示例
2019/08/07 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
GWebs公司笔试题
2012/05/04 面试题
校园达人秀策划书
2014/01/12 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
网上书店创业计划书
2014/01/12 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
被告答辩状范文
2015/05/22 职场文书
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android