接上篇:COVID-19 疫情数据爬取及探索性分析

工具介绍

echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。
pyecharts 是 echarts 的 python 接口,用于实现python数据的可视化展示

地图绘制

世界各国家现存确诊地图

导入绘制数据

import pandas as pd
world_data = pd.read_csv("./today_world_2021_02_18.csv")

加载 pyecharts 可视化库

import pyecharts
# 调整配置项
import pyecharts.options as opts
# Map类用于绘制地图
from pyecharts.charts import Map
# 计算世界各国家现存确诊人数
world_data['today_storeConfirm'] = world_data['total_confirm'] - world_data['total_heal'] - world_data['total_dead']

地图上绘制国家名称为英文,使用中英文对照表,改变名称,我的表是百度百科自行下载的

contry_name = pd.read_csv("county_china_english.csv", encoding='UTF-8')
# 进行中英替换
world_data['eg_name'] = world_data['name'].replace(contry_name['中文'].values ,contry_name['英文'].values)

提取出我们需要的数据,保存成一个嵌套列表的形式:

heatmap_data = world_data[['eg_name','today_storeConfirm']].values.tolist()
heatmap_data[:10]

# 绘图,初始化类对象Map
map_ = Map().add(series_name = "现存确诊人数", # 设置提示框标签data_pair = heatmap_data, # 输入数据maptype = "world", # 设置地图类型为世界地图is_map_symbol_show = False # 不显示标记点)
# 设置系列配置项
map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 不显示国家(标签)名称
# 设置全局配置项
map_.set_global_opts(title_opts = opts.TitleOpts(title="世界各国家现存确诊人数地图"), # 设置图标题# 设置视觉映射配置项visualmap_opts = opts.VisualMapOpts(pieces=[ # 自定义分组的分点和颜色{"min": 10000,"color":"#800000"}, # 栗色{"min": 5000, "max": 9999, "color":"#B22222"}, # 耐火砖{"min": 999, "max": 4999,"color":"#CD5C5C"}, # 印度红{"min": 100, "max": 999, "color":"#BC8F8F"}, # 玫瑰棕色{"max": 99, "color":"#FFE4E1"}, # 薄雾玫瑰], is_piecewise = True))  # 显示分段式图例
# 在notebook中进行渲染
map_.render_notebook()

玫瑰图

世界各国家死亡人数玫瑰图

need_data = world_data[['name','total_dead']][world_data['total_dead'] >500]
rank = need_data[['name','total_dead']].sort_values(by='total_dead',ascending=False).values
from pyecharts.charts import Piepie = Pie().add("累计死亡人数", # 添加提示框标签rank, # 输入数据radius = ["20%", "80%"],  # 设置内半径和外半径center = ["70%", "60%"],  # 设置圆心位置rosetype = "radius")   # 玫瑰图模式,通过半径区分数值大小,角度大小表示占比
pie.set_global_opts(title_opts = opts.TitleOpts(title="世界国家累计死亡人数玫瑰图",  # 设置图标题pos_right = '40%'),  # 图标题的位置legend_opts = opts.LegendOpts( # 设置图例orient='vertical', # 垂直放置图例pos_right="55%", # 设置图例位置pos_top="15%"))pie.set_series_opts(label_opts = opts.LabelOpts(formatter="{b} : {d}%")) # 设置标签文字形式为(国家:占比(%))# 在notebook中进行渲染
pie.render_notebook()

动态条形图

世界各国家累计确诊人数动态条形图

alltime_data = pd.read_csv("alltime_world_2021_02_18.csv",encoding='utf-8')
country_list = ['美国', '印度', '中国', '西班牙', '墨西哥', '伊朗', '法国', '英国', '意大利','巴西']
need_data = alltime_data[alltime_data['name'].isin(country_list)]
from datetime import datetime,timedelta
time_list = [(datetime(2020, 3, 1) + timedelta(i)).strftime('%Y-%m-%d') for i in range(262)]
import matplotlib.pyplot as plt
%matplotlib inlineplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['figure.dpi'] = 100
color_list = ['brown','peru','orange','blue','green','red','yellow','teal','pink','orchid']
country_color = pd.DataFrame()
country_color['country'] = country_list
country_color['color'] = color_list
import matplotlib.ticker as tickerdef barh_draw(day):# 提取每一天的数据draw_data = need_data[need_data['date']==day][['name','total_confirm']].sort_values(by='total_confirm',ascending=True)# 清空当前的绘图ax.clear()# 绘制条形图ax.barh(draw_data['name'],draw_data['total_confirm'], color=[country_color[country_color['country']==i]['color'].values[0] for i in draw_data['name']])# 数值标签的间距dx = draw_data['total_confirm'].max()/200# 添加数值标签for j, (name, value) in enumerate(zip(draw_data['name'], draw_data['total_confirm'])):ax.text(value+dx, j, f'{value:,.0f}', size=10, ha='left', va='center')# 添加日期标签ax.text(draw_data['total_confirm'].max()*0.75, 0.4, day, color='#777777',size=40, ha='left')# 设置刻度标签的格式ax.xaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}'))# 设置刻度的位置ax.xaxis.set_ticks_position('top')# 设置刻度标签的颜色和大小ax.tick_params(axis='x',colors='#777777', labelsize=15)# 添加网格线ax.grid(which='major',axis='x',linestyle='-')# 添加图标题ax.text(0, 11, '3月至11月17日世界各国家累计确诊人数动态条形图',size=20, ha='left')# 去除图边框plt.box(False)# 关闭绘图框plt.close()
# 动态绘图
fig, ax = plt.subplots(figsize=(12, 8))import matplotlib.animation as animation
from IPython.display import HTMLanimator = animation.FuncAnimation(fig, barh_draw, frames=time_list, interval=200)
HTML(animator.to_jshtml())

COVID-19疫情数据可视化相关推荐

  1. 【Dash搭建可视化网站】项目10:疫情数据可视化大屏制作步骤详解

    疫情数据可视化大屏制作步骤详解 1 项目效果图 2 项目架构 3 文件介绍和功能完善 3.1 assets文件夹介绍 3.2 app.py和index.py文件完善 3.3 header.py文件完善 ...

  2. 数据分析---疫情数据可视化(地图)

    数据分析---疫情数据可视化(地图) 安装pyecharts库 爬取所需要的数据(网上直接爬取数据) 绘制全国地图 绘制省份地图(以湖北省为例) 在全国地图上加入湖北省数据 导入数据(本地导入数据) ...

  3. pyecharts实践--2019-nCoV疫情数据可视化地图(实时更新)

    2019-nCoV疫情数据可视化地图效果如下: 获取数据(本文数据获取自腾讯的疫情实时追踪) 腾讯的疫情实时追踪网页: 点击查看. 这里我使用的是Google,追踪得到的数据如下图: 双击左边的 ge ...

  4. 疫情数据可视化-湖北省疫情可视化软件设计大赛作品

    湖北省疫情监测中心(疫情数据可视化)目录 前言 一.数据可视化 二.疫情可视化 湖北省疫情监测中心 ① 主要框架 ② 数据爬取 ③ 疫情可视化模块(疫情监测模块) ④ 便民信息可视化模块(检测信息模块 ...

  5. 对比3家平台,我总结了疫情数据可视化的8点经验

    www.pmcaff.com 本文为作者 吾某 于社区发布 开年以来,随着疫情方面的数据逐渐增多,一些互联网公司也纷纷发布一些可视化的数据产品服务,让用户可以实时并直观了解最新情况,可谓一个便民利器. ...

  6. 毕业设计-基于Python爬虫的疫情数据可视化系统

    基于Python爬虫的疫情数据可视化系统 采用ECharts+Flask+Requests架构: 源码加3105088663

  7. mac mongodb可视化工具_github项目推荐|2019 冠状病毒疫情爬虫。疫情数据可视化

    ncov_2019_spider 2019 冠状病毒疫情爬虫.疫情数据可视化. 项目背景 疫情数据分析 数据来源 丁香医生,从1.24号开始采集入库,所以工程包含了24号后的数据. 数据展示 技术栈 ...

  8. 周获 4700 Star 全球疫情数据可视化系统,超轻量级中文 OCR……GitHub 一周热点速览...

    作者 | HelloGitHub-小鱼干 来源 | HelloGitHub 摘要:连着两周成绩平平的 GitHub Trending 榜,终于和三月的天气一样进入全面变暖的模式,无论是本周刚开源搭乘 ...

  9. 新冠肺炎疫情数据可视化分析-FineBI

    目录 一.实验(实训)目的 二.实验(实训)原理或方法 三.仪器设备.材料 四.实验(实训)步骤 五.实训记录及结果 <------------------------------------- ...

  10. 基于python數據分析的疫情数据可视化系统

    文章目录 前言 1 课题背景 2 实现效果 2.1 整体界面展示 2.2 收集數據 3 實現過程 3.1 爬取疫情數據: 3.1.1 導包 3.1.2 實例化csv 3.1.3 防反爬 3.1.4 爬 ...

最新文章

  1. 傅里叶变换的参考文档
  2. Health Check in eShop -- 解析微软微服务架构Demo(五)
  3. 从壹开始前后端分离【 .NET Core2.2 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储+服务+抽象接口模式...
  4. 何股票投资者十有九不赢?
  5. ATM and Students 双指针,前缀和(1800)
  6. 广东全国计算机二级报名时间2015,2017年9月广东计算机二级报名时间为6月15-30日...
  7. 使用乱序标签来控制HTML的输出效果
  8. php-fpm通道,Go语言通道(chan)——goroutine之间通信的管道
  9. ECJia 到家 v1.5.1 发布,基于 O2O 的移动电商开源系统
  10. 人证合一验证目前逐渐普及大众
  11. linux bzip指定名称,bzip2命令_Linux bzip2 命令用法详解:将文件压缩成bz2格式
  12. Chrome浏览器启动命令行参数大全
  13. 5G可以让万人演唱会中人人有网上?有它就行 1
  14. win10系统qq截图时屏幕局部自动放大怎么办 解决方法
  15. 七升七降调号_降7是什么调?
  16. 使用Python将Word表格转Excel
  17. AtCoder Beginner Contest 171 C.One Quadrillion and One Dalmatians
  18. Win11下Clion+MSYS2(MinGW64)配置C++编译环境
  19. jpinyin 将城市名汉字转化为拼音
  20. 亿万富翁神奇公式:年存1.4万四十年变1亿

热门文章

  1. Unity_物体旋转方法归纳
  2. 【十一日记】 清北学堂酱油记
  3. VARIATIONAL AUTOENCODER FOR SPEECH ENHANCEMENT WITH A NOISE-AWARE ENCODER
  4. AudioRecord
  5. 在父亲节到来之际,强烈推荐德国幽默大师的连环漫画《父与子》,父子亲情跃然纸上(多图)...
  6. 为什么 C++ 中成员函数指针是 16 字节?
  7. 隐藏和显示电脑下方任务栏
  8. 锤子手机的整容脸和罗永浩的自我救赎:M1系列会被市场认可吗?
  9. class函数 python_python中class函数如何使用
  10. Oracle Error:ORA-01465: 无效的十六进制数字【解决办法】