可视化 | 中国历届夏季奥运会奖牌数据(树图)

简介: 可视化 | 中国历届夏季奥运会奖牌数据(树图)

大家好,我是欧K。本期给大家盘点一下中国历届夏季奥运会奖牌获取情况,并用python树图动态展示希望对你有所帮助。


先看看效果


1. 导入模块

from pyecharts.charts import Tree
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType


2. 选择结构

2.1 历年奖牌数据

奖牌数据:

dic = {
'2016年': ('China', 26, 18, 26),
'2012年': ('China', 38, 27, 24),
'2008年': ('China', 51, 21, 28),
'2004年': ('China', 32, 18, 14),
'2000年': ('China', 28, 16, 14),
'1996年': ('China', 17, 22, 12),
'1992年': ('China', 16, 22, 15),
'1988年': ('China', 5, 11, 12),
'1984年': ('China', 15, 8, 9)}

翻阅新中国夏季奥运会历史,最早可上溯到1984年。

2008年,奥运会在中国北京举行,无论是在参加人数、媒体报道、赛事组织、场馆建设等多个方面,北京奥运会都可以说是一届“真正的无与伦比”的奥运会。中国代表团共派出运动员639人,参加了全部28个大项的比赛,创下中国历届奥运参赛人数之最。各项目百花齐放,中国队在赛艇、射箭、帆船帆板、拳击项目中首次拿到金牌,实现历史性突破。最终,中国取得了51金21银28铜的优异成绩,成为奥运历史上首个登上金牌榜首的亚洲国家,创造了中国代表团参加奥运会以来的最好成绩。


2.2 设置颜色样式、节点线条样式


颜色样式

color_js = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
    [{offset: 0, color: '#696969'}, {offset: 1, color: '#ed1941'}], false)"""
color_js0 = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
    [{offset: 0, color: '#696969'}, {offset: 1, color: '#FFD700'}], false)"""
color_js1 = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
    [{offset: 0, color: '#696969'}, {offset: 1, color: '#C0C0C0'}], false)"""
color_js2 = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
    [{offset: 0, color: '#696969'}, {offset: 1, color: '#8B4513'}], false)"""
color_js3 = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
    [{offset: 0, color: '#FFFF00'}, {offset: 1, color: '#FF0000'}], false)"""
color_js4 = """new echarts.graphic.LinearGradient(0, 0, 1, 0,
    [{offset: 0, color: '#FFF0F5'}, {offset: 1, color: '#1E90FF'}], false)"""
color_function = """
        function (params) {
            if (params.name == '金牌') {
                return '#FFD700';
            } else if (params.name == '银牌') {
                return '#C0C0C0';
            }
            return '#8B4513';
        }
        """

节点线条样式

width = 1.5
curveness = 0.9
itemStyle1={'color':JsCode(color_js0)}
itemStyle2={'color':JsCode(color_js1)}
itemStyle3={'color':JsCode(color_js2)}
one_level_style = {'color':JsCode(color_js),'width': width, 'curveness': curveness, 'type': 'solid'}
gold_style = {'color':JsCode(color_js0),'width': width, 'curveness': curveness, 'type': 'solid'}
silver_style = {'color':JsCode(color_js1),'width': width, 'curveness': curveness, 'type': 'solid'}
bronze_style = {'color':JsCode(color_js2),'width': width, 'curveness': curveness, 'type': 'solid'}


2.3 构造父子数据

代码:

data = [{
    "name": "",
    'symbolSize':'15',
    'itemStyle':{
            'color': JsCode(color_js3),
            'borderWidth':2,
            'opacity':0.9
    } ,
    "children": [
        {
            "name": "1984年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 15,'itemStyle':itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 8,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 9,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
                {
            "name": "1988年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 5,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 11,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 12,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
        {
            "name": "1992年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 16,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 22,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 15,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
                {
            "name": "1996年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 17,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 22,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 12,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
                {
            "name": "2000年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 28,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 16,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 14,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
                {
            "name": "2004年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 32,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 18,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 14,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
        {
            "name": "2008年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 51,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 21,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 28,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
        {
            "name": "2012年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 38,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 27,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 24,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
        {
            "name": "2016年",
            'itemStyle':{'color':JsCode(color_js4)},
            'lineStyle':one_level_style,
            "children": [
                {"name": "金牌", "value": 26,'itemStyle': itemStyle1,'lineStyle':gold_style},
                {"name": "银牌", "value": 18,'itemStyle':itemStyle2,'lineStyle':silver_style},
                {"name": "铜牌", "value": 26,'itemStyle':itemStyle3,'lineStyle':bronze_style}
            ]
        },
    ]
}]

3. 绘制树图

代码:

t = (
        Tree(init_opts=opts.InitOpts(theme = ThemeType.CHALK,width="1000px", height="600px"))
        .add(
            "",
            data,
            pos_top="18%",
            pos_bottom="14%",
            symbol='circle',
            layout="radial",
            edge_fork_position="80%",
            symbol_size=15,
            label_opts=opts.LabelOpts(position="top",color='#00FFFF'),
            leaves_label_opts=opts.LabelOpts( position = 'top',distance = 12,vertical_align= 'left',
                                             font_size=12,color=JsCode(color_function),formatter='{b}: {c}')
            )
        .set_global_opts(
            tooltip_opts=opts.TooltipOpts(trigger="item", trigger_on="mousemove"),
            title_opts=opts.TitleOpts(title="中国历届夏季奥运会奖牌数",pos_left='center',pos_top="5%"))
    )
t.render_notebook()

效果:



也可以根据需要调整排列格式


完。

END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关文章
|
JSON JavaScript 数据可视化
D3 不到20行代码就能实现世界地图的绘制
每到农历年末,相信很多小伙伴和本作者一样,都忍不住会去看江苏卫视的一档脑力比拼节目《最强大脑》,尽管上一季最强大脑喷点确实很多,但依旧没有减弱"追剧"的热情。今年最强大脑(第5季)的赛制有很大的变化,挑战的人数从百人大战,到最强30脑,再到现从第三场的一对一PK,确实与以往有了很大的不同。此外,今年更加强调了选手在生活中的光环,例如本文要引用的一场比赛就是最近一期来自清华的孙勇与北京的陈泽坤的一场以地图投影为背景的比赛,孙勇就是顶着2016安徽省高考理科状元的光环来的。今年没了叨叨魏,节目的流程显得自然了很多。好了,不扯了,来、来、来来来!我们开始说本文要讲的主题--地图。
1681 0
D3 不到20行代码就能实现世界地图的绘制
|
6月前
|
机器学习/深度学习 人工智能 文字识别
Umi-OCR:31K Star!离线OCR终结者!公式+二维码+多语种,开源免费吊打付费
Umi-OCR 是一款免费开源的离线 OCR 文字识别工具,支持截图、批量图片、PDF 扫描件的文字识别,内置多语言识别库,提供命令行和 HTTP 接口调用功能。
508 0
Umi-OCR:31K Star!离线OCR终结者!公式+二维码+多语种,开源免费吊打付费
|
数据可视化 JavaScript API
使用D3.js进行数据可视化的探索与实践
【6月更文挑战第2天】本文探讨了D3.js在数据可视化中的应用,介绍了D3.js作为JavaScript库的特性,包括数据驱动、灵活性和兼容性。实践中,涉及数据准备、创建SVG容器、数据绑定与绘制、交互与动画以及样式美化。D3.js使开发人员能高效创建动态、交互式图表,适用于多平台和设备。未来,随着数据可视化技术进步,D3.js的应用前景广阔。
|
数据可视化 JavaScript 架构师
D3.js实战:数据可视化高级技巧实例应用
本文介绍了D3.js入门,包括创建HTML文件引入库、绘制简单线图、柱状图和饼图。示例展示了数据绑定、交互性和动画效果,如柱状图的悬停效果和线图的数据平滑过渡。此外,还提及力导向图和地图可视化的实现,以及使用Enter, Update, Exit模式进行动态更新。最后提到了复杂图表和高级技巧,如使用组件库、动画、交互性和性能优化。
433 0
|
JavaScript 前端开发 程序员
Vue条件语句中v-if、v-else、v-else-if的用法
这篇文章详细介绍了Vue中`v-if`、`v-else`和`v-else-if`条件语句的用法,包括它们的正确使用方式、常见的错误以及如何使用`<template>`标签来同时切换多个元素的显示状态。
|
JavaScript 数据安全/隐私保护 Python
JS逆向 -- 某平台登录加密分析
JS逆向 -- 某平台登录加密分析
332 0
|
JavaScript UED
Vue.js 中的 `v-if`、`v-else-if` 和 `v-else`:条件渲染详解
Vue.js 中的 `v-if`、`v-else-if` 和 `v-else`:条件渲染详解
463 0
|
监控 NoSQL 安全
【MongoDB 专栏】MongoDB 的复制集:高可用性配置
【5月更文挑战第10天】MongoDB的复制集是实现数据高可用性的重要机制,由主节点和次节点构成,主节点处理写操作,次节点同步数据确保一致。在主节点故障时,次节点自动提升接替,保证服务不间断。通过复制集,可实现数据保护、持续服务,适用于关键业务系统和数据备份。配置时需关注网络稳定性、节点性能和数据一致性。案例显示,复制集能有效保障服务高可用,防止数据丢失和业务中断,是现代数据库管理的关键工具。在数据驱动的世界,复制集为高可用性提供了坚实保障。
222 0
【MongoDB 专栏】MongoDB 的复制集:高可用性配置
|
监控 JavaScript Java
毕业设计|基于Spring Boot和Vue.js的前后端分离商城系统(一)
毕业设计|基于Spring Boot和Vue.js的前后端分离商城系统
281 0
|
机器学习/深度学习 搜索推荐 算法
【Python 机器学习专栏】基于机器学习的推荐系统实现
【4月更文挑战第30天】本文探讨了机器学习在推荐系统中的应用,阐述了推荐系统的基本原理和常用算法,如协同过滤和基于内容的推荐。详细介绍了基于机器学习的推荐系统实现步骤,包括数据预处理、特征工程、模型选择与训练、评估与优化。Python及其相关库如Scikit-learn、TensorFlow在实现推荐系统中起到关键作用。同时,文章讨论了推荐系统面临的挑战(数据稀疏性、冷启动、实时性)及应对策略,并强调通过持续优化可构建更精准的推荐系统,为用户带来个性化体验。
769 0