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用GET方法上传文件
Mar 10 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python单元测试简单示例
Jul 03 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
python实现祝福弹窗效果
Apr 07 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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 CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
php实现每日签到功能
2018/11/29 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
前端微信支付js代码
2016/07/25 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
js的对象与函数详解
2019/01/21 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
运动会广播稿20字
2014/02/18 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
市场营销计划书
2015/01/17 职场文书
毕业典礼邀请函
2015/01/31 职场文书
英语邀请函范文
2015/02/02 职场文书
谢师宴学生致辞
2015/07/27 职场文书
汽车销售合同文本
2019/08/08 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android