专栏首页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 条评论
登录 后参与评论

相关文章

  • 50 行代码获取疫情实时数据,发送可视化图表到邮箱

    关于疫情的实时数据获取,我们可以通过爬虫直接去爬取(百度、腾讯、阿里)疫情数据平台上的实时数据。这边小编选择的爬取腾讯的实时数据。

    程序员白楠楠
  • 基于PyEcharts的COVID-19疫情可视化分析

    将国家或地区的数值信息映射到地图上,通过颜色变化来表示数值的大小或范围。颜色地图适合带有地理位置信息的数据的展现,将颜色和地图相结合,直观显示数据的地理分布,通...

    数据酷客
  • 美国失业人数突破2200万!这个动态图我用Python画出来了

    【导语】:今天我们聊聊美国失业人数,Python技术部分可以直接看第二部分。公众号后台,回复关键字“失业人数”获取完整数据。

    CDA数据分析师
  • 央视点赞:武大学学生用Python画出樱花开放

    近期正好是一年一度的樱花季,往年的此时大家应该纷纷出门赏樱花,但是由于疫情影响,大家为了响应国家号召,尽量不出门。武汉大学,曾经是赏花的胜地,但是现在武汉是本次...

    我被狗咬了
  • 抗击疫情,AI、5G、云计算联手“助阵”,科技公司们倾力驰援

    一场突如其来的疫情,让这个春节多了一些关键词——武汉、口罩、隔离、延迟复工/开学……

    镁客网
  • 数字战“疫” | 武汉加油!我们期待春暖花开!

    ? 2020年的春节, 注定会是个被历史铭记的春节 新型冠状病毒肺炎疫情, 牵动着全国数亿人的心, 随着疫情的扩散, 全国人民都在武汉加油, 大家都在用各种方...

    腾讯文旅
  • 爬取历史热搜,武汉到底上了几次热搜?

    这次小编带大家从技术的角度看一看,自从疫情爆发以来,探索一下武汉到底上了微博多少次热搜。

    用户6825444
  • 全国多地病例0新增,教你用Python画出当下最火的疫情直观图

    点击下方视频,先睹为快:https://v.qq.com/x/page/i0933k361gl.html

    CDA数据分析师
  • 用Pyecharts对疫情数据进行可视化分析

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

    用户3577892
  • 武汉“封城”抗击新型肺炎,北大最新病毒宿主研究指向蛇,被感染专家:眼睛也需防护

    自2020年1月23日10时起,全市城市公交、地铁、轮渡、长途客运暂停运营;无特殊原因,市民不要离开武汉,机场、火车站离汉通道暂时关闭。恢复时间另行通告。

    量子位
  • 直击雨花疫情防卫战,有难度更有温度

    农历29日,新型冠状病毒的疫情如星火燎原,迅速在神州大地蔓延,武汉“封城”之后,一场艰苦的战斗正在打响。

    用户2908108
  • 外卖数据下的武汉:普通人的封城十日生活

    下楼倒完垃圾,冯先生取下身上的全副武装:帽子、眼镜、手套和口罩。紧接着,他将外套换下、好好洗了个手、再给衣物喷上消毒液准备洗掉。

    CDA数据分析师
  • “困”在武汉的那些创业者:我们没慌

    元生创新在武汉的创业圈小有名气,刚刚过去的一年它们获得了“2019年中国留学人员创业园最具成长性创业企业”的称号,带着“博士创业团”的标签,在惯性运动传感与定位...

    镁客网
  • 数字战“疫” | 宁夏开通线上游VR虚拟平台 微信实现“卧游”

    ? 新型冠状病毒肺炎疫情发生后,宁夏回族自治区文化和旅游厅暂停全区一切文旅活动,所有文化场馆和旅游景区等公共服务场所暂停对外开放。在线下活动全面暂停、有力防控...

    腾讯文旅
  • 共抗疫情的开源项目,让我们贡献自己的一份力量

    转眼新型冠状病毒爆发到现在已经过去快要 1 个月了,奋斗在前线的出了医生、护士、生物医药研究人员之外,我们技术人员也用了我们自己的方式来打这场战。首先上场的是一...

    HelloGitHub
  • 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中文趋势榜第一!

    每天早上醒来的第一眼,都会看一下实时疫情数据情况以及一些其他关于疫情方面的事宜,截至到 2020年2月10日13时,全国疫情实时数据累计确诊:40236例,累计...

    杰哥的IT之旅
  • Python数据可视化告诉你:境外的疫情到底有多严重!

    连日来,在境内的新冠肺炎疫情得到有效的控制之下,境外的疫情却迅速蔓延,除了南极洲之外,世界六大洲已有53个国家发现病毒确诊病例,并且每日不断激增。今天小编就用数...

    用户6888863
  • 拐点何时出现?这是北大面向新冠疫情的数据可视化分析与模拟预测

    2019 年在武汉爆发的新型冠状病毒肺炎(国家卫健委简称 NCP)传播迅猛,已被世界卫生组织(WHO)定为「国际关注的突发公共卫生事件」。对疫情的控制,自 1 ...

    机器之心
  • 数据推测:哪些城市的新型肺炎疫情可能被低估?

    在过去的 48 小时内,由武汉爆发逐渐流向全国乃至全球的新型肺炎疫情开始在舆论场中发酵。在新增病例被接连报告的同时,春运大潮高峰已经启动。而春运所代表的中国每年...

    编程文青李狗蛋

扫码关注云+社区

领取腾讯云代金券