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的Template使用指南
Sep 11 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
Python中模块与包有相同名字的处理方法
May 05 Python
基于Python闭包及其作用域详解
Aug 28 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
Python骚操作之动态定义函数
Mar 26 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
Python使用Web框架Flask开发项目
Jun 01 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
pw的一个放后门的方法分析
2007/10/08 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Python模拟用户登录验证
2017/09/11 Python
python八皇后问题的解决方法
2018/09/27 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
采购内勤岗位职责
2013/12/10 职场文书
留学推荐信怎么写
2014/01/25 职场文书
实习评语大全
2014/04/26 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
律师函格式范本
2015/05/27 职场文书
贫困证明怎么写
2015/06/16 职场文书
护理自荐信
2019/05/14 职场文书
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers