疫情数据预处理,并基于pyecharts可视化分析

from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import WarningType
from pyecharts.globals import ThemeType
import pandas as pd
import numpy as np
#from yishu.datasets import *
WarningType.ShowWarning = False

covid19 = pd.read_excel('covid19.xlsx')
covid19.head()

total_by_day = covid19.sum().astype(int)
total_by_day

line = Line()
line.add_xaxis(total_by_day.index.tolist())
#line.add_yaxis()
line.add_yaxis(11, total_by_day.values.tolist(), label_opts=opts.LabelOpts(is_show=False))
line.render_notebook()

bar = Bar(init_opts=opts.InitOpts(width="800px", height="600px")) 
# 获取前10个地区的名称和4月4日的数据,并反转顺序 
regions = covid19["地区"][:10][::-1].tolist() 
cases_on_april_4 = covid19["4月4日"][:10][::-1].tolist() 
# 添加x轴和y轴数据,并设置标签位置为右侧 
bar.add_xaxis(regions)  
bar.add_yaxis("4 月4日病例数", cases_on_april_4, label_opts=opts.LabelOpts(position="right")) 
# 添加另一个数据系列(例如3月3日的数据) 
cases_on_march_3 = covid19["3月3日"][:10][::-1].tolist() 
bar.add_yaxis("3 月3日病例数", cases_on_march_3, label_opts=opts.LabelOpts(position="right")) 
# 反转坐标轴,使柱状图从右到左显示 
bar.reversal_axis()  
# 在Jupyter Notebook中渲染图表 
bar.render_notebook() 

data = [list(z) for z in zip(covid19["地区"], covid19["4月4日"])]
data

mapping = {
    '湖北': '湖北省',
    '广东': '广东省',
    '河南': '河南省',
    '浙江': '浙江省',
    '湖南': '湖南省',
    '安徽': '安徽省',
    '江西': '江西省',
    '山东': '山东省',
    '江苏': '江苏省',
    '重庆': '重庆市',
    '四川': '四川省',
    '黑龙江': '黑龙江省',
    '北京': '北京市',
    '上海': '上海市',
    '河北': '河北省',
    '福建': '福建省',
    '广西': '广西壮族自治区',
    '陕西': '陕西省',
    '云南': '云南省',
    '海南': '海南省',
    '贵州': '贵州省',
    '天津': '天津市',
    '山西': '山西省',
    '辽宁': '辽宁省',
    '吉林': '吉林省',
    '香港': '香港特别行政区',
    '甘肃': '甘肃省',
    '新疆': '新疆维吾尔自治区',
    '内蒙古': '内蒙古自治区',
    '宁夏': '宁夏回族自治区',
    '台湾': '台湾省',
    '青海': '青海省',
    '澳门': '澳门特别行政区',
    '西藏': '西藏自治区'
}
# 修改省份名称
data = [[mapping.get(i[0], i[0]), i[1]] for i in data]

map = Map()
map.add("", data, "china", is_map_symbol_show=None, is_roam=None)
#map.set_global_opts(title_opts=opts.TitleOpts(title=))
map.set_global_opts(title_opts=opts.TitleOpts(title="各省份的累计确诊人数"), 
    visualmap_opts=opts.VisualMapOpts(
    max_=10000, is_piecewise=True, range_color=['white', '#AB2524'], dimension=0, pos_right="5%",
    pieces= [{"min": 0, "max": 9},{"min": 10, "max": 99},{"min": 100, "max": 999},
             {"min": 1000, "max": 9999},{"min": 10000, "max": 99999}]
))
map.render_notebook()

line.set_global_opts(
    title_opts=opts.TitleOpts(title="累计确诊人数", pos_top="60%", pos_left="left"), 
    legend_opts=opts.LegendOpts(pos_left="20%", pos_top="70%")
)
bar.set_global_opts(
    xaxis_opts=opts.AxisOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(
        max_=99999, is_piecewise=True, range_color=['white', '#AB2524'], dimension=0, pos_right="10%", 
        pieces= [{"min": 0, "max": 9},{"min": 10, "max": 99},{"min": 100, "max": 999},
                 {"min": 1000, "max": 9999},{"min": 10000, "max": 99999}]
    )
)


grid = Grid()
grid.add(bar, grid_opts=opts.GridOpts(pos_top="10%", pos_bottom="50%", pos_left="6%", pos_right="70%"))
grid.add(line, grid_opts=opts.GridOpts(pos_top="70%", pos_bottom="5%", pos_left="6%", pos_right="65%"))
grid.add(map, grid_opts=opts.GridOpts())
grid.render_notebook()


timeline = Timeline()
timeline.add_schema(is_auto_play=True, is_timeline_show=False, is_loop_play=True, play_interval=200 )
for i, date in enumerate(covid19.columns[1:]):
    bar = Bar()
    bar.add_xaxis(covid19["地区"][:10][::-1].tolist())
    bar.add_yaxis("", covid19[date][:10][::-1].tolist(), label_opts=opts.LabelOpts(position="right"))
    bar.reversal_axis()
    bar.set_global_opts(
        xaxis_opts=opts.AxisOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(
            max_=99999, is_piecewise=True, range_color=['white', '#AB2524'], dimension=0, pos_right="10%", 
            pieces= [{"min": 0, "max": 9},{"min": 10, "max": 99},{"min": 100, "max": 999},
                     {"min": 1000, "max": 9999},{"min": 10000, "max": 99999}]
        )
    )
    
    line = Line()
    line.add_xaxis(total_by_day.index.tolist())
    line.add_yaxis("", total_by_day.values.tolist()[:i+1], label_opts=opts.LabelOpts(is_show=False))
    line.set_global_opts(
        title_opts=opts.TitleOpts(title="累计确诊人数", pos_top="60%", pos_left="left"), 
        legend_opts=opts.LegendOpts(pos_left="20%", pos_top="70%")
    )


    data = [list(z) for z in zip(covid19["地区"], covid19[date].tolist())]
    map = Map()
    map.add("", data, "china", is_map_symbol_show=False, is_roam=False)
    map.set_global_opts(title_opts=opts.TitleOpts(title="各省份累计确诊人数(" + date + ")", pos_left="center"))
    
    grid = Grid()
    grid.add(bar, grid_opts=opts.GridOpts(pos_top="10%", pos_bottom="50%", pos_left="6%", pos_right="70%"))
    grid.add(line, grid_opts=opts.GridOpts(pos_top="70%", pos_bottom="5%", pos_left="6%", pos_right="65%"))
    grid.add(map, grid_opts=opts.GridOpts())
    
    timeline.add(grid, date)

timeline.render_notebook()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值