python绘制疫情图
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绘制疫情图的更多相关文章
- Python绘制面积图
一.Python绘制面积图对应代码如下图所示 import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans ...
- Python绘制折线图
一.Python绘制折线图 1.1.Python绘制折线图对应代码如下图所示 import matplotlib.pyplot as pltimport numpy as np from pylab ...
- 如何用 Python 绘制玫瑰图等常见疫情图
新冠疫情已经持续好几个月了,目前,我国疫情已经基本控制住了,而欧美国家正处于爆发期,我们会看到很多网站都提供了多种疫情统计图,今天我们使用 Python 的 pyecharts 框架来绘制一些比较常见 ...
- python绘制三维图
作者:桂. 时间:2017-04-27 23:24:55 链接:http://www.cnblogs.com/xingshansi/p/6777945.html 本文仅仅梳理最基本的绘图方法. 一. ...
- Python绘制雷达图(俗称六芒星)
原文链接:https://blog.csdn.net/Just_youHG/article/details/83904618 背景 <Python数据分析与挖掘实战> 案例2–航空公司客户 ...
- 使用Python绘制漫步图
代码如下: import matplotlib.pyplot as plt from random import choice class RandomWalk(): def __init__(sel ...
- python绘制动态图
1.需要注意的问题 解决 MatplotlibDeprecationWarning: Using default event loop until function specific to this ...
- 用python绘制趋势图
import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import date ...
- 【python】pandas & matplotlib 数据处理 绘制曲面图
Python matplotlib模块,是扩展的MATLAB的一个绘图工具库,它可以绘制各种图形 建议安装 Anaconda后使用 ,集成了很多第三库,基本满足大家的需求,下载地址,对应选择pytho ...
随机推荐
- MyBatis XML常用配置
1.属性(properties) 可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递. 可以外部定义好properties文件通过 ...
- 浅谈hover用法
在前端页面制作中,我们时常要用到移动显示.隐藏的动态效果,我们一般采用js来实现此效果.不过在大部分情况下,我们也可以使用hover来实现此动态效果. 在此,我谈一谈我对hover的用法,请看以下代码 ...
- codeforces Beautiful Numbers
来源:http://codeforces.com/problemset/problem/1265/B B. Beautiful Numbers You are given a permutat ...
- vue中,实现锚点定位及跳转(url不发生变化)
<div class="footer" @click="returnTop"> methods:{ returnTop:function(){ do ...
- C# 面试编程算法题
求以下表达式的值: 1. 1 - 2 + 3 - 4 + … + m public static int Foo1(int m) { ; ; i <= m; i++) { == ) { sum ...
- Java后台技术(线程安全)
前端时间一个同事因为后台线程安全问题出了一次生产事故,今天我就对线程安全问题进行一次总结. 首先,我们来大致看以下我同事写的代码,代码我进行了精简,大致如下: for (final String re ...
- 安卓开发:用ImageView放上图片后上下有间隙
想不到在我使用第一个UI控件ImageView时候就遇上了问题,简单使用ImageView如下: <ImageView android:layout_width="match_pare ...
- 使刚编辑的vim编辑器配置文件立即生效(实为自动生效)
简单的说,在虚拟机下安装的Centos6.3系统后,默认的是没有vim编辑器的配置文件,此时如果有必要,可以按照自己的习惯定制或配置自己的vim编辑器: 1,如果你是root权限,进入root目录下: ...
- 8个问题看你是否真的懂 JS
文章转载: https://juejin.im/post/5d2d146bf265da1b9163c5c9#heading-20 原文地址: https://dev.to/aman_singh/so- ...
- 开关电源ac-dc推荐电路
在使用AC-DC电源模块SA系列时,如果碰到对模块的输出纹波噪声要求较高或对EMC要求严格的场合,应对模块进行必要的滤波处理使到满足不同环境的特殊要求,以下推荐一滤波电路供参考: 图中各元件的说明:1 ...