专栏首页FSociety【武汉加油⛽️】基于Pyecharts的疫情数据可视化~

【武汉加油⛽️】基于Pyecharts的疫情数据可视化~

image

前言

?疫情终将过去,静待春暖花开~

?本文使用的数据源来自https://lab.isaaclin.cn/nCoV/zh

?运行本项目需要将pyecharts版本更新至v1.6.2,!pip install pyecharts == 1.6.2

⚡️更好的阅读体验访问我的Kesci Lab:点我跳转

相关教程:

获取数据

变量名

注释

currentConfirmedCount

现存确诊人数

confirmedCount

累计确诊人数

suspectedCount

疑似感染人数

curedCount

治愈人数

deadCount

死亡人数

代码 & 效果

?导库 & 数据请求

import requests
import pyecharts
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from datetime import date

# 数据来源于 Github DXY-COVID-19-Data, 原作者为 Isaac Lin
url = 'https://lab.isaaclin.cn/nCoV/api/area'
data = requests.get(url).json()

# 生成更新日期
update_date = date.today()

?全球疫情地图

oversea_confirm = []
for item in data['results']:
    if item['countryEnglishName']:
        oversea_confirm.append((item['countryEnglishName'].replace('United States of America', 'United States')
                                                          .replace('United Kiongdom', 'United Kingdom'), 
                                item['confirmedCount']))
    
    
_map = (
        Map(init_opts=opts.InitOpts(theme='dark'))
        .add("累计确诊人数", oversea_confirm, "world",is_map_symbol_show=False)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="新型冠状病毒全球疫情地图",
                                     subtitle="更新日期:{}".format(update_date)),
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(is_show=True, max_=50, 
                                              is_piecewise=False, 
                                              range_color=['#FFFFE0', '#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']),
            graphic_opts=[
                    opts.GraphicGroup(
                        graphic_item=opts.GraphicItem(
                            bounding="raw",
                            right=150,
                            bottom=50,
                            z=100,
                        ),
                        children=[
                            opts.GraphicRect(
                                graphic_item=opts.GraphicItem(
                                    left="center", top="center", z=100
                                ),
                                graphic_shape_opts=opts.GraphicShapeOpts(
                                    width=200, height=50
                                ),
                                graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
                                    fill="rgba(0,0,0,0.3)"
                                ),
                            ),
                            opts.GraphicText(
                                graphic_item=opts.GraphicItem(
                                    left="center", top="center", z=100
                                ),
                                graphic_textstyle_opts=opts.GraphicTextStyleOpts(
                                    text=JsCode("['钻石号邮轮', '累计确诊人数:{}人'].join('\\n')"
                                                .format(dict(oversea_confirm)['Diamond Princess Cruise Ship'])),
                                    font="bold 16px Microsoft YaHei",
                                    graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
                                        fill="#fff"
                                    ),
                                ),
                            ),
                        ],
                    )
                ],
        )
    )

_map.render_notebook()

? 全国疫情地图

province_data = []
for item in data['results']:
    if item['countryName'] == '中国':
        province_data.append((item['provinceShortName'], item['confirmedCount']))
        
_map = (
        Map(init_opts=opts.InitOpts(theme='dark'))
        .add("累计确诊人数", province_data, "china",is_map_symbol_show=False)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图",
                                     subtitle="更新日期:{}".format(update_date)),
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000, 
                                              is_piecewise=False, 
                                              range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000'])
        )
)

_map.render_notebook()

?湖北省内确诊情况

for item in data['results']:
    if item['provinceShortName'] == '湖北':
        hubei_data = item['cities']
        
bar = (
        Bar(init_opts=opts.InitOpts(theme='dark'))
        .add_xaxis([x['cityName'] for x in hubei_data])
        .add_yaxis("累计确诊人数", [x['confirmedCount'] for x in hubei_data])
        .add_yaxis("当前确诊人数", [x['currentConfirmedCount'] for x in hubei_data])
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="新型冠状病毒湖北省内确诊情况",
                                     subtitle="更新日期:{}".format(update_date)),
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
            legend_opts=opts.LegendOpts(is_show=True),
            graphic_opts=[
                    opts.GraphicGroup(
                        graphic_item=opts.GraphicItem(
                            bounding="raw",
                            right=300,
                            top=120
                        ),
                        children=[
                            opts.GraphicRect(
                                graphic_item=opts.GraphicItem(
                                    left="center", top="center"
                                ),
                                graphic_shape_opts=opts.GraphicShapeOpts(
                                    width=200, height=60
                                ),
                                graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
                                    fill="rgba(0,0,0,0.3)"
                                ),
                            ),
                            opts.GraphicText(
                                graphic_item=opts.GraphicItem(
                                    left="center", top="center", z=1
                                ),
                                graphic_textstyle_opts=opts.GraphicTextStyleOpts(
                                    text=JsCode("['当前确诊人数:', '','累计确诊人数-死亡人数-治愈人数'].join('\\n')"),
                                    font="bold 12px Microsoft YaHei",
                                    graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
                                        fill="#fff"
                                    ),
                                ),
                            ),
                        ],
                    )
                ],
                )
        )

bar.render_notebook()

?全国确诊热力地图

cities_data = []
for item in data['results']:
    if item['countryName'] == '中国':
        cities_data.extend((item['cities']))
        
geo = (
        Geo(init_opts=opts.InitOpts(theme='dark'))
        .add_schema(maptype="china", zoom=3, center=[114.31,30.52])
        .add("累计确诊人数", 
             [(i['cityName'], i['currentConfirmedCount']) for i in cities_data 
              if i['cityName'] in pyecharts.datasets.COORDINATES.keys()], 
             type_='heatmap',
             symbol_size=3,
             progressive=50)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情热力图",
                                     subtitle="更新日期:{}".format(update_date),
                                     pos_left='right'),
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(is_show=True, 
                                              is_piecewise=False, 
                                              range_color=['blue', 'green', 'yellow', 'yellow', 'red'])
        )
)

geo.render_notebook()

  • ?Coding不易,欢迎点赞支持~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Python可视化】使用Pyecharts进行奥运会可视化分析~

    项目全部代码 & 数据集都可以访问我的KLab --【Pyecharts】奥运会数据集可视化分析~获取,点击Fork即可~

    Awesome_Tang
  • 【Python可视化】超详细Pyecharts 1.x教程,让你的图表动起来~

    pyecharts 是一个用于生成 Echarts 图表的Python库。Echarts是百度开源的一个数据可视化 JS 库,可以生成一些非常酷炫的图表。

    Awesome_Tang
  • 【Pyecharts可视化分享】杭州步行热门路线等~

    Awesome_Tang
  • 还在用matplotlib画图?你out啦

    进行数据处理的时候,可视化是非常重要的数据分析方式,但是有时候在处理大批量的数据时,由于数据量过多,数据往往会非常密集,而不能发现有效信息,而我们经常使用的ma...

    zhangqibot
  • 使用Pyecharts对猫眼电影票房可视化分析

    我又来了!上次做了个猫眼电影的不过瘾,又感觉票房其实是最好拿到的数据,所以就继续接着它做了。废话不多说,直接上干货!

    Python知识大全
  • 【Python可视化】使用Pyecharts进行奥运会可视化分析~

    项目全部代码 & 数据集都可以访问我的KLab --【Pyecharts】奥运会数据集可视化分析~获取,点击Fork即可~

    Awesome_Tang
  • Flask 扫盲系列-权限设置

    在前面的学习中,我们设置了系统的注册和登陆功能,已经基本满足了一个小型 Web 应用的需求。那么如果我们想通过这个网站来赚些小钱呢,就需要提供更高级的功能,当然...

    周萝卜
  • 用 Python 制作地球仪的方法

    Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫、数据分析、数据可视化、游戏等等各方面,这些功能在实际的使用中应用广泛,开发程序讲究页面的美观与炫...

    砸漏
  • Python3--监控疫情

    from pyecharts.charts import Map, Geo

    用户2337871
  • 用Pyecharts对疫情数据进行可视化分析

    本文使用的数据源来自https://lab.isaaclin.cn/nCoV/zh

    用户3577892

扫码关注云+社区

领取腾讯云代金券