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 相关文章推荐
基于hashlib模块--加密(详解)
Jun 21 Python
python中Switch/Case实现的示例代码
Nov 09 Python
django2 快速安装指南分享
Jan 05 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
python如何处理程序无法打开
Jun 16 Python
python如何绘制疫情图
Sep 16 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
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
开启PHP的伪静态模式
2015/12/31 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
python同时遍历两个list用法说明
2020/05/02 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
Python如何执行系统命令
2020/09/23 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
电钳工人个人求职信
2014/05/10 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
英文辞职信范文
2015/05/13 职场文书
岁月神偷观后感
2015/06/11 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers