python如何绘制疫情图

作者:默默不语 时间:2022-03-10 10:06:10 

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)

来源:https://www.cnblogs.com/qilin20/p/12347830.html

标签:python,绘图,疫情图
0
投稿

猜你喜欢

  • python ansible自动化运维工具执行流程

    2021-08-07 01:54:25
  • 详解Python GUI工具取色器

    2021-01-23 10:12:04
  • PHP警告Cannot use a scalar value as an array的解决方法

    2023-11-14 20:43:04
  • 解决Pytorch 加载训练好的模型 遇到的error问题

    2022-07-21 11:10:45
  • python“静态”变量、实例变量与本地变量的声明示例

    2021-11-16 23:17:28
  • Python 使用tf-idf算法计算文档关键字权重并生成词云的方法

    2022-03-28 13:09:18
  • 如何用Python Beautiful Soup解析HTML内容

    2021-04-24 10:20:00
  • Python实现统计给定字符串中重复模式最高子串功能示例

    2023-07-22 23:42:44
  • python中的路径拼接问题

    2021-02-06 11:28:56
  • 教你用一行Python代码实现GUI图形界面

    2021-10-15 01:38:30
  • Pytorch pth 格式转ONNX 格式的详细过程

    2021-08-29 05:15:28
  • asp 动态生成rss(不成生xml文件)代码

    2011-04-04 11:17:00
  • python实现爱奇艺登陆密码RSA加密的方法示例详解

    2022-02-10 00:41:53
  • python使用电子邮件模块smtplib的方法

    2023-09-29 20:20:38
  • 详解MySQL数据库之更新语句

    2010-08-08 09:15:00
  • ASP在线转flv+缩略图

    2007-08-27 16:18:00
  • 搜索系统与导航系统的关系

    2009-09-08 12:44:00
  • GO语言原生实现文件上传功能

    2023-10-17 08:29:39
  • python批量提取word内信息

    2021-05-18 14:25:50
  • python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例

    2021-06-13 09:13:14
  • asp之家 网络编程 m.aspxhome.com