爬虫练习---爬取最新全球、全国及各省疫情数据(四):疫情数据可视化

我们利用前面处理得到的疫情CSV文件,展示主要疫情国家的对比,需要的工具如下:

工具:
anoconda
Jupyter notebook
matplotlib

完整代码:

%matplotlib notebook  #用于播放动画

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from matplotlib.animation import FuncAnimation

# 用于显示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

# 1.准备数据
# 1.1 加载数据
datas = pd.read_csv('./corona_virus_of_world.csv', index_col=0, dtype=np.int32)
# 1.2 准备累计
top10 = datas.iloc[4: , :10]
# 相同国家显示对应颜色
color=['r', 'g', 'b', 'm', 'c', 'yellow', 'yellowgreen', 'hotpink', 'orange', 'hotpink']
name_color_map = dict(zip(top10.columns, color))

# 2.创建画布和绘图区
fig, ax = plt.subplots(figsize=(10, 6), dpi=100)
# 3.实现动画更新方法
def update(date):
    # 1.绘制基本的条形图
    # 清空画布
    ax.clear()
    # 准备数据
    # 对条形图按现有确诊人数降序排列
    data = top10.loc[date].sort_values()
    # 生成各个国家的颜色列表
    color = [name_color_map[name] for name in data.index]
    # 绘制条形图
    ax.barh(data.index, data.values, color=color)
    # 2.添加辅助信息
    # 2.1 在每个柱状体上添加国家和现有确诊病列数量
    for i, name in enumerate(data.index):
        # 获取这个国家现有确诊病例数量
        value = data[name]
        dx = data.max() / 100
        # 现有确诊病例数量
        ax.text(value+dx, i, value, fontsize=12)
        # 国家名称
        name_x = value-len(name)*dx*2.5
        if name_x > 0:
            ax.text(name_x, i, name, fontsize=12)
    # 2.2 添加日期
    ax.text(0.8, 0.3, date, transform=ax.transAxes, fontsize=16)
    # 2.3 设置x的刻度在顶部
    ax.xaxis.set_ticks_position('top')
    # 2.4 添加标题
    ax.text(0, 1.06, '累计确诊病例数量', transform=ax.transAxes, fontsize=14)
    ax.text(0.4, 1.12, 'Top10国疫情对比', transform=ax.transAxes, fontsize=18)
    # 2.5 显示网格
    ax.grid(axis='x')
    # 2.6 不显示边框
    plt.box(False)
    
# 4.创建动画并展示
animation = FuncAnimation(fig, update, frames=top10.index, repeat=False)
# 5.保存为mp4视频
animation.save('主要国家疫情对比.mp4', fps=5)
plt.show()

动画展示:

在这里插入图片描述
动画:

主要疫情国家确诊人数对比

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值