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

                                 

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

  

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

#!/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绘制疫情图的更多相关文章

  1. Python绘制面积图

    一.Python绘制面积图对应代码如下图所示 import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans ...

  2. Python绘制折线图

    一.Python绘制折线图 1.1.Python绘制折线图对应代码如下图所示 import matplotlib.pyplot as pltimport numpy as np from pylab ...

  3. 如何用 Python 绘制玫瑰图等常见疫情图

    新冠疫情已经持续好几个月了,目前,我国疫情已经基本控制住了,而欧美国家正处于爆发期,我们会看到很多网站都提供了多种疫情统计图,今天我们使用 Python 的 pyecharts 框架来绘制一些比较常见 ...

  4. python绘制三维图

    作者:桂. 时间:2017-04-27  23:24:55 链接:http://www.cnblogs.com/xingshansi/p/6777945.html 本文仅仅梳理最基本的绘图方法. 一. ...

  5. Python绘制雷达图(俗称六芒星)

    原文链接:https://blog.csdn.net/Just_youHG/article/details/83904618 背景 <Python数据分析与挖掘实战> 案例2–航空公司客户 ...

  6. 使用Python绘制漫步图

    代码如下: import matplotlib.pyplot as plt from random import choice class RandomWalk(): def __init__(sel ...

  7. python绘制动态图

    1.需要注意的问题 解决 MatplotlibDeprecationWarning: Using default event loop until function specific to this ...

  8. 用python绘制趋势图

    import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import date ...

  9. 【python】pandas & matplotlib 数据处理 绘制曲面图

    Python matplotlib模块,是扩展的MATLAB的一个绘图工具库,它可以绘制各种图形 建议安装 Anaconda后使用 ,集成了很多第三库,基本满足大家的需求,下载地址,对应选择pytho ...

随机推荐

  1. mvc 部分页

    在一些复杂的项目中,我们经常会遇到一个页面存在很多模块,存在页面交互或者加载数据过多等问题,这种时候,我们很可能会考虑到通过使用部分页来解决这个问题(ps:当然还有很多的解决方案,在这里只是简单介绍这 ...

  2. C#面向对象三大特性:继承

    什么是继承 定义:继承是面向对象编程语言中的一个重要特性,当一个类A能够获取另一个类B中所有非私有的数据和操作的定义作为自己的部分或全部成分时,就称这两个类之间具有继承关系.被继承的类B称为父类或基类 ...

  3. 6、Maven仓库

    在Maven的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程.jar文件,library jar文件,插件或者任何其他的工程指定的文件 Maven仓库有三种类型 本地(local) ...

  4. maven搭建父子项目

    父工程:父工程又称为父控制器,只是一个简单的工程,不能单独运行.作用是将子模块跟子工程聚合在一起.父控制器中的pom.xml配置,在子模块跟子工程中都可以被继承. 子工程:项目中创建的具有业务逻辑并且 ...

  5. AtCoDeer and Election Report

    问题 G: AtCoDeer and Election Report 时间限制: 1 Sec  内存限制: 128 MB[提交] [状态] 题目描述 AtCoDeer the deer is seei ...

  6. 怎么拆分一个Excel工作簿中的多个工作表?

    打开需要编辑的Excel文档.如图所示,工作簿下方有很多工作表.现在需要将这些工作表单独拆分开成一个个工作簿.   右键任意一个工作表标签,在弹出的下拉列表中选择查看代码.即弹出代码窗口.如下图所示. ...

  7. 《记一次Linux被入侵全过程》阅读笔记

    此前从未了解过关于网络安全相关方面的内容,仅仅知道安全性是软件必不可少的质量属性之一,而由于自己所做项目对安全性需求基本为无,所以很少对此进行关注.今天看到作者系统被入侵的经验,于是点开来读,以积累他 ...

  8. MySQL8.0.11安装后,使用CMD无法启动mysql服务

    首先,先把mysql的bin路径添加到系统环境变量 这样做可以,直接进入CMD后执行mysql服务,不需要进入mysql的bin文件路径去执行. 第一步:在MySQL的安装文件的bin目录(例如:C: ...

  9. sql注入小姿势

    利用/*!union*/可以绕过对union的过滤

  10. Docker Learning Notes

    Docker简介 是什么 问题:为什么会有docker出现 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的 ...