文章目录

  • 3.2 运动员可视化
    • 3.2.1 数量可视化
      • 1. 按国家奥委会聚合矩形树图
      • 2. 按赛事类型聚合矩形树图
    • 3.2.2 地理可视化
      • 1. 各国运动员分布地图
    • 3.2.3 比例可视化
      • 1. 各国主要项目参赛运动员比例
  • 3.3 国家奥委会可视化
    • 3.3.1 比例可视化
      • 1. 东京奥运会参赛国家获奖比例水滴图
      • 2. 东京奥运会参赛国家获奖比例饼图
      • 3. 东京奥运会参赛国家获奖比例组合图

  上篇博文【可视化|东京奥运会可视化(一)】中分享了东京奥运会奖牌榜可视化,下面我们继续介绍运动员可视化与国家奥委会可视化。

3.2 运动员可视化

3.2.1 数量可视化

1. 按国家奥委会聚合矩形树图

此处的矩形树图学习自另一个作者的可视化文章,但笔者暂时找不到当时那篇博文,等我找到后再补上原文链接!!!

# [可视化]按国家统计运动员数量
from pyecharts.charts import TreeMap
from pyecharts import options as opts
import pandas as pdathletes_df=pd.read_csv("./DataSet/Athletes/athletes.csv")
df_t = athletes_df.groupby(['Team_NOC', 'sports'])['name'].count().reset_index()
df_t.columns = ['国家奥委会', '赛事', '人数']data = []
country = []
for idx, row in df_t.iterrows():if row['国家奥委会'] in country:data[-1]['children'].append(dict(name=row['赛事'], value=row['人数']))else:data.append(dict(name=row['国家奥委会'], children=[dict(name=row['赛事'], value=row['人数'])]))country.append(row['国家奥委会'])treemap = TreeMap(    init_opts=opts.InitOpts(theme='light',width='1000px',height='600px',# bg_color='rgb(0,0,0)'))
treemap.add("参赛人数", data,leaf_depth=1,label_opts=opts.LabelOpts(position="inside", formatter='{b}:{c}名'),levels=[opts.TreeMapLevelsOpts(treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(border_color="#555", border_width=4, gap_width=4)),opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.6],treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(border_color_saturation=0.7, gap_width=2, border_width=2),),opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5],treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(border_color_saturation=0.6, gap_width=1),),# opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5]),],)
treemap.set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会参赛人数统计(国家/地区)", pos_left='center', title_textstyle_opts=opts.TextStyleOpts(font_size=20)),legend_opts=opts.LegendOpts(is_show=False))treemap.render('./Visual/运动员数量[国家].html')


  例如,点击【美国】,可以得到美国各个比赛项目的参赛人数统计。

2. 按赛事类型聚合矩形树图
# [可视化]按运动项目统计运动员数量
from pyecharts.charts import TreeMap
from pyecharts import options as optsathletes_df=pd.read_csv("./DataSet/Athletes/athletes.csv")
df_t = athletes_df.groupby(['sports', 'Team_NOC'])['name'].count().reset_index()
df_t.columns = ['赛事', '国家奥委会', '人数']data = []
event = []
for idx, row in df_t.iterrows():if row['赛事'] in event:data[-1]['children'].append(dict(name=row['国家奥委会'], value=row['人数']))else:data.append(dict(name=row['赛事'], children=[dict(name=row['国家奥委会'], value=row['人数'])]))event.append(row['赛事'])tree = TreeMap(    init_opts=opts.InitOpts(theme='light',width='1000px',height='600px',# bg_color='rgb(0,0,0)'))
tree.add("参赛人数", data,leaf_depth=1,label_opts=opts.LabelOpts(position="inside", formatter='{b}:{c}名'),levels=[opts.TreeMapLevelsOpts(treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(border_color="#555", border_width=4, gap_width=4)),opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.6],treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(border_color_saturation=0.7, gap_width=2, border_width=2),),opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5],treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(border_color_saturation=0.6, gap_width=1),),# opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5]),],)
tree.set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会参赛人数统计(赛事)", pos_left='center', title_textstyle_opts=opts.TextStyleOpts(font_size=20)),legend_opts=opts.LegendOpts(is_show=False))
tree.render('./Visual/运动员数量[赛事].html')


  例如,点击【赛艇】,可以得到各个国家奥委会在该项目的参赛人数统计。

3.2.2 地理可视化

1. 各国运动员分布地图
#[可视化]东京奥运会各国运动员分布地图
from pyecharts import options as opts
from pyecharts.charts import Map# 名称映射
namemap_df=pd.read_csv("./DataSet/国家名中英文对照表.csv")
name_map=dict(namemap_df[['名称','英文名称']].values.tolist())
# 运动员数量统计
athlete_df=pd.read_csv("./DataSet/Athletes/athletes.csv")
data_list=athlete_df.groupby(by=['Team_NOC'])['name'].count().reset_index().values.tolist()
data_list2=[]
for data in data_list:if data[0] in name_map.keys():data=[name_map[data[0]],data[1]]data_list2.append(data)
map = (Map().add("", data_list2, "world",is_map_symbol_show=False,).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会各国运动员分布图"),visualmap_opts=opts.VisualMapOpts(max_=500,range_color=['#feeeed','#d71345'])).render("./Visual/[地图]各国运动员分布图.html")
)

3.2.3 比例可视化

1. 各国主要项目参赛运动员比例

此处的组合饼图学习自另一个作者的可视化文章,但笔者暂时找不到当时那篇博文,等我找到后再补上原文链接!!!

  利用Pandas从CSV中获取运动员数据,并按各国参赛项目计数:

pie = Pie(init_opts=opts.InitOpts(theme='light',width='1000px',height='800px',)
)
titles = [dict(text='2020东京奥运会各国主要项目参赛运动员比例',left='center',top='0%',textStyle=dict(color='#000',fontSize=20))]
for i, c in enumerate(country_list):d = df_t[df_t['Team_NOC'] == c].reset_index()data_pair = []else_num = 0for idx, row in d.iterrows():if idx < 5:data_pair.append(opts.PieItem(name=row['sports'],value=row['number'],label_opts=opts.LabelOpts(is_show=True, formatter='{b}:{d}%')))else:else_num += row['number']data_pair.append(opts.PieItem(name='其他',value=else_num,label_opts=opts.LabelOpts(is_show=True, formatter='{b}:{d}%')))pos_x = '{}%'.format(int(i / 4) * 33 + 16)pos_y = '{}%'.format(i % 4 * 24 + 20)titles.append(dict(text=c+' ',left=pos_x,top=pos_y,textAlign='center',textVerticalAlign='middle',textStyle=dict(color='#00BFFF',fontSize=12)))pie.add(c,data_pair,center=[pos_x, pos_y],radius=['8%', '12%'])pie.set_global_opts(legend_opts=opts.LegendOpts(is_show=False),title_opts=titles
)
pie.render("./Visual/[组合饼图]各国主要项目参赛运动员比例.html")

3.3 国家奥委会可视化

3.3.1 比例可视化

1. 东京奥运会参赛国家获奖比例水滴图

  利用Pandas从CSV中获取参赛国家和获奖国家列表和数量:

#[可视化]东京奥运会参赛国家获奖比例水滴图
import pandas as pd
from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolTypec = (Liquid().add("", [round(len(medals_country)/len(engage_country),2), 1-round(len(medals_country),2)], is_outline_show=False, shape=SymbolType.DIAMOND).set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会参赛国家获奖比例",title_textstyle_opts=opts.TextStyleOpts(font_size=20))).render("./Visual/[水滴图]东京奥运会参赛国家获奖比例.html")
)


  可以更改水滴图的形状样式:

#[可视化]东京奥运会参赛国家获奖比例水滴图
import pandas as pd
from pyecharts.charts import Liquid
from pyecharts import options as opts
from pyecharts.globals import SymbolTypec = (Liquid().add("", [round(len(medals_country)/len(engage_country),2)]).set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会参赛国家获奖比例",title_textstyle_opts=opts.TextStyleOpts(font_size=20))).render("./Visual/[水滴图]东京奥运会参赛国家获奖比例.html")
)

2. 东京奥运会参赛国家获奖比例饼图

  利用Pandas从CSV中获取参赛国家和获奖国家列表和数量:

#[可视化]东京奥运会参赛国家获奖比例饼图
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeTypec = (Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)).add("",[['获奖',93],["未获奖",113]]).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).set_global_opts(title_opts=opts.TitleOpts(title='2020东京奥运会参赛国家获奖比例',title_textstyle_opts=opts.TextStyleOpts(font_size=20)),legend_opts=opts.LegendOpts(is_show=False)).render("./Visual/[饼图]东京奥运会参赛国家获奖比例饼图.html")
)

3. 东京奥运会参赛国家获奖比例组合图
#[可视化]东京奥运会参赛国家获奖比例组合图
import pandas as pd
from pyecharts.charts import Liquid, Pie, Grid
from pyecharts import options as opts
from pyecharts.globals import SymbolType
# 获奖国家数量
medals_country=list(pd.read_csv("./DataSet/Medals/all-sports_medals.csv")['国家奥委会'].drop_duplicates())
# 参赛国家数量
engage_country=list(pd.read_csv("./DataSet/Athletes/athletes.csv")['Team_NOC'].drop_duplicates())
liquid = (Liquid().add("", [round(len(medals_country)/len(engage_country),2)],center=['70%','50%']).set_global_opts(title_opts=opts.TitleOpts(title="2020东京奥运会参赛国家获奖比例",title_textstyle_opts=opts.TextStyleOpts(font_size=20)))
)
pie = (Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)).add("",[['获奖',93],["未获奖",113]],center=['30%','50%'],radius=['20%','50%']).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).set_global_opts(title_opts=opts.TitleOpts(title='2020东京奥运会参赛国家获奖比例',title_textstyle_opts=opts.TextStyleOpts(font_size=20)),legend_opts=opts.LegendOpts(is_show=True,pos_right='2%',pos_top='1%'))
)
grid = (Grid().add(pie, grid_opts=opts.GridOpts()).add(liquid, grid_opts=opts.GridOpts()).render("./Visual/[饼图水滴图]东京奥运会参赛国家获奖比例.html")
)


  本项目以数据可视化的方式,结合可视分析学,对东京奥运会的数据进行搜集、处理、分析、提炼,并利用pyecharts绘制成可视化图表。至此,关于东京奥运会的可视化就结束啦,欢迎交流!

可视化|东京奥运会可视化(二)相关推荐

  1. 可视化|东京奥运会可视化(一)

    文章目录 1 数据来源 1.1 东京奥运会官网 1.2 咪咕视频东京奥运会数据接口 2 可视化工具 3 可视化过程 3.1 奖牌榜可视化 3.1.1 数量可视化 1. TOP20国家的金银铜数量堆叠柱 ...

  2. 数据爬虫及可视化——东京奥运会奖牌榜

    东京奥运会奖牌榜爬虫 通过手机浏览器实时查看奥运会奖牌信息 将手机浏览器访问的地址复制,通过计算机浏览器访问 打开谷歌浏览器的开发者工具,切换到network选项卡,刷新页面重新请求. 拖动滚动条,找 ...

  3. 数据爬取东京奥运会获得奖牌国家及地区旗帜图片

    目录 旗帜图片链接 从列表中取出文字和对应旗帜链接 将图片通过链接请求保存在本地(img文件夹需提前创建好) 通过for循环遍历取出所有国家及地区的旗帜 通过爬虫获取旗帜链接URL,爬虫代码详情见:数 ...

  4. 东京奥运会的网络安全竞赛,顶级黑客的王者之战

    这是一场顶级黑客之间关于技术的较量,失败者将承担难以想象的后果. 奥运会作为全世界规模最大.影响力最大的综合性运动会,高知名度和国际性通常使其成为极具吸引力的攻击目标.在过去的奥运会上,奥运会机构及其 ...

  5. Python制作可视化大屏(东京奥运会)

    目录 文章目录 前言 一.数据爬取 二.数据预处理 三.Pyecharts可视化 3.1 2020东京奥运会各国金牌分布图 3.2 2020东京奥运会奖牌榜详情 3.3 2020东京奥运会中国各项目获 ...

  6. Pyecharts“可视化大屏“,带你重温 “2020东京奥运会“,不看直播尽知其事!

    本文禁止其他人转载,违者必究! 目录   1.项目背景   2.奥运会相关信息爬取    ① 导入相关库    ② 爬虫代码完整讲解   3.数据预处理    ① 数据替换    ② 数据分组     ...

  7. 【2020东京奥运会】奥运榜单以及各国参赛运动员数据可视化~

    项目 本文中的代码是基于notebook写的,可以访问https://www.heywhale.com/mw/project/61015e73aca24600179ec778获取完整notebook. ...

  8. 爬虫+可视化 | 动态展示2020东京奥运会奖牌世界分布

    文章目录 前言 1. 导入模块 2. 数据爬取 3. 地图展示 3.1 2020东京奥运会奖牌数世界分布 3.2 2020东京奥运会金牌世界分布 3.3 2020东京奥运会金.银.铜世界分布

  9. 2020东京奥运会数据集echarts可视化分析

    1.数据集的下载 2021 Olympics in Tokyo | Kaggle 部分数据集的内容如下 2.金牌榜前10名 <!DOCTYPE html> <html> < ...

最新文章

  1. python 发邮件-带附件-文本-html
  2. 【Hadoop】MAC下hadoop2.6安装以及执行wordcount
  3. docker环境安装mysql
  4. 有关ucosii中OSTCBY、OSTCBBitY、OSTCBX、OSTCBBitX的意义(我是菜鸟)
  5. 归档日志 delete input 和delete all input 区别
  6. Azure Site Recovery之启用复制
  7. C++ 之父讨厌比特币
  8. PyQt、PySide、PySide2这三者到底有什么区别?
  9. matlab范德蒙,matlab有效生成范德蒙多矩阵
  10. 破解win7开机密码
  11. 体验灵魂出窍:错觉延伸人体对自身感觉
  12. 局部线性嵌入(Locally Linear Embedding,简称LLE)
  13. 代码主题darcula_如何在带有Darcula主题的黑暗模式下使用NetBeans
  14. 人工智能时代下,Python与C/C++谁将成为人工智能核心算法选择?
  15. Emgucv图像处理二
  16. 怎样防止租用服务器数据丢失问题
  17. 英飞凌 | 140W(28V/5A) USB-PD3.1 高功率密度方案
  18. 一个 ABAP 开发的新浪微博语义情感分析工具
  19. 置顶的搜索框html,HTML实现移动端固定悬浮半透明搜索框
  20. JAVA面试题(第一部分)

热门文章

  1. 基于curl 的zabbix API调用
  2. EUV光刻技术如何为功率半导体提供动力
  3. camera.swf java,ipcamera-for-android 手机变成IP Camera
  4. H3C和华为配置端口聚合的问题
  5. 云原生时代,我们为何离不开混沌工程?
  6. CentOS6u9 Oracle11g RAC 搭建部署(八)OGG测试
  7. 第十三周 任务四
  8. 联邦学习((Federated Learning,FL)
  9. 范德堡大学计算机,范德堡大学计算机专业博士成功申请案例
  10. 屏幕分辨率 VGA、HVGA、QVGA、WVGA、WQVGA