python疫情数据可视化软件_python-pyecharts 疫情数据可视化

本文展示了如何使用Python的pyecharts库来创建全国疫情数据的地图和图表,包括累计确诊人数地图、当前确诊人数地图、疫情发展趋势线图以及感染人数条形图。代码分别生成了全国疫情的地图统计,并提供了数据来源。
摘要由CSDN通过智能技术生成

画图代码文件

draw_picture.py

from pyecharts import options as opts

from pyecharts.charts import Map, Page, Tab

from pyecharts.faker import Faker

from pyecharts.components import Table

from pyecharts.charts import Line, Bar

from pyecharts.globals import ThemeType

from datetime import date

from json_data1 import province_data_sum, province_data_now

# from snapshot_selenium import snapshot

from pyecharts.render import make_snapshot

# 生成全国疫情确诊人数累计地图

def get_map_old_data() -> map:

print(province_data_sum)

update_date = date.today()

map = (

Map(init_opts=opts.InitOpts(theme=ThemeType.WHITE, width='100%', height='900px'))

.add("全国累计确诊人数", province_data_sum, "china", is_map_symbol_show=False, is_roam=False)

.set_global_opts(

title_opts=opts.TitleOpts(

title="新冠状病毒全国疫情地图统计",

subtitle="更新日期:{}".format(update_date),

),

# 视觉映射配置项

visualmap_opts=opts.VisualMapOpts(

is_show=True, # 是否显示

min_=0, # 左下角刻度最小值

max_=2000,

range_color=['#FFFFFF', '#F7DC6F', '#F4D03F', '#F1C40F', '#C0392B', '#A93226'], # 颜色过滤配置

),

) # .render('img/全国疫情可视化map.html')

)

# make_snapshot(snapshot, map.render(), 'img/全国疫情可视化map.gif')

return map

# 生成全国疫情当前确诊人数地图

def get_map_now_data() -> map:

print(province_data_now)

update_date = date.today()

map = (

Map(init_opts=opts.InitOpts(theme=ThemeType.WHITE, width='100%', height='900px'))

.add("全国现确诊人数", province_data_now, "china", is_map_symbol_show=False, is_roam=False)

.set_global_opts(

title_opts=opts.TitleOpts(

title="新冠状病毒全国疫情地图统计",

subtitle="更新日期:{}".format(update_date),

),

# 视觉映射配置项

visualmap_opts=opts.VisualMapOpts(

is_show=True, # 是否显示

min_=0, # 左下角刻度最小值

max_=100,

range_color=['#FFFFFF', '#F1C40F', '#D4AC0D'] # 颜色过滤配置

)

)

)

# make_snapshot(snapshot, map.render(), 'img/全国疫情可视化map1.gif')

return map

# 生成折线统计图

def get_line_pic():

from json_data1 import province_data_tuple

c = (

Line(init_opts=opts.InitOpts(width="100%",

# 设置动画

animation_opts=opts.AnimationOpts(

animation_delay=1000,

animation_duration=10000,

)

))

.add_xaxis(province_data_tuple[0])

.add_yaxis(

"累计感染人数",

province_data_tuple[1],

# areastyle_opts=opts.AreaStyleOpts(opacity=0.5),

label_opts=opts.LabelOpts(is_show=False),

)

.add_yaxis(

"累计治愈人数",

province_data_tuple[2],

# areastyle_opts=opts.AreaStyleOpts(opacity=0.5),

label_opts=opts.LabelOpts(is_show=False),

)

.add_yaxis(

"累计死亡人数",

province_data_tuple[3],

# areastyle_opts=opts.AreaStyleOpts(opacity=0.5),

label_opts=opts.LabelOpts(is_show=False),

)

.set_global_opts(

title_opts=opts.TitleOpts(title="新冠肺炎走势图"),

)

)

# make_snapshot(snapshot, c, 'img/全国疫情可视化line.gif')

return c

def get_bar_pic() -> Bar:

from json_data1 import province_data_tuple

c = (

Bar(init_opts=opts.InitOpts(width='100%'))

.add_xaxis(province_data_tuple[0])

# 不显示数据

.add_yaxis("感染人数", province_data_tuple[1], label_opts=opts.LabelOpts(is_show=False))

.set_global_opts(

title_opts=opts.TitleOpts(title="新冠肺炎感染人数"),

# 锁定区域

datazoom_opts=[opts.DataZoomOpts()],

)

)

return c

# page图

def page_picture():

page = Page(layout=Page.SimplePageLayout)

page.add(

get_map_old_data(),

get_map_now_data(),

get_line_pic(),

get_bar_pic(),

)

page.render('img/全国疫情可视化汇总图.html')

# make_snapshot(snapshot, page.render(), '全国疫情可视化.gif')

page_picture()

# def tab_picture():

# tab = Tab()

# tab.add(get_map_old_data(), "全国感染人数累计分布图")

# tab.add(get_map_now_data(), "当前感染人数分布图")

# tab.add(get_line_pic(), "疫情趋势图")

# tab.add(get_bar_pic(), "疫情条形统计图")

# tab.render('img/全国疫情可视化.html')

数据来源 sina api

# 封装 json 数据类 返回所有需要的数据

# 新浪数据接口

# https://interface.sina.cn/news/wap/fymap2020_data.d.json

import json

import requests

class JsonData:

# 获取新浪api json 数据

def get_sina_data(self):

"""

:return:

"""

# https://c.m.163.com/ug/api/wuhan/app/data/list-total

url = "https://interface.sina.cn/news/wap/fymap2020_data.d.json"

response = requests.request('get', url=url)

json_data = json.loads(response.text)

# with open('json.txt', 'r+') as f:

# json_text = f.read()

# json_data = json.loads(json_text)

# print(json_data, type(json_data))

return json_data['data']

# 获取地方名和累计人数

def get_old_number(self):

"""

:return: 各地区的 [名字和人数] 列表

"""

province_data = []

json_data = self.get_sina_data()['list']

for one_data in json_data:

# 获取各地区名称和感染人数

province_data.append([

one_data['name'],

one_data['value']

])

return province_data

# 获取当前新冠肺炎感染人数

def get_now_number(self):

province_data = []

json_data = self.get_sina_data()['list']

for one_data in json_data:

# 获取各地区名称和当前感染人数

province_data.append([

one_data['name'],

one_data['econNum']

])

return province_data

# 历史数据 从 1.11 截止到2020年8月10日

def get_history_list(self):

json_data_history = self.get_sina_data()['historylist']

date_x = []

people_number_y = []

people_cure_y = []

people_death_y = []

for data in json_data_history:

date_x.append(data['date'])

people_number_y.append(data['cn_conNum'])

people_cure_y.append(data['cn_cureNum'])

people_death_y.append(data['cn_deathNum'])

return date_x[::-1], people_number_y[::-1], people_cure_y[::-1], people_death_y[::-1]

jsondata = JsonData()

province_data_sum = jsondata.get_old_number() # 各个地区累计人数

province_data_now = jsondata.get_now_number() # 各个地区当前人数

province_data_tuple = jsondata.get_history_list()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值