数据可视化之NBA球员雷达图

目录

前言

一、雷达图介绍

二、时间轴介绍

三、代码实现过程

安装pyecharts

1.导入所需的pandas库pyecharts库还有相关的包

2.导入NBA球员数据

3.数据处理

4.每个方向的小标题文字的格式配置

5.添加两个需要比较的数据

6.配置数据标签

7.设置大标题,设置图例

8.创建时间轴组件

效果图

附完整代码

总结


前言

通过使用python语言,我们可以很容易地制作出我们需要的图像。图像生成可以直接而清晰地让我们了解数据,我们称之为信息可视化。现在让我们来讲解一下雷达图。本人新手小白,如果有什么问题请多多包涵

雷达图介绍

雷达图通常用于综合分析多个指标,具有完整,清晰和直观的优点因此使用NBA球员数据进行分析。雷达图在显示各维度数据的对比情况的同时,还可以对全部维度的整体情况有一个直观的展示。

雷达图的缺点

1.如果雷达图像上的多边形过多,会降低可读性,使整体图形过于混乱。特别是在有颜色填充的多边形的情况下,上层会遮挡并覆盖下层的多边形

2.如果变量太多,也会导致可读性下降,因为一个变量对应一个坐标轴,这会使坐标轴过于密集,使图表感觉复杂。因此,最好的做法是尽可能控制变量的数量,以保持雷达图的简单明了

二、时间轴介绍

它是将一个或多个事件按时间顺序连接起来,形成一个相对完整的记录系统,然后以图文的形式呈现给用户;时间线可以应用于不同的领域,其最大的功能是将过去的事件系统化、整合和提炼。

三、代码实现过程

安装pyecharts

先启动anaconda或windows系统的命令提示符,然后在命令行中执行在线下载安装pyecharts库的命令,示例如下所示:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

1.导入所需的pandas库pyecharts库还有相关的包

import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Radar
from pyecharts.charts import Timeline

2.导入NBA球员数据

data = pd.read_excel(r'NBA中国官方网站 _ 球员数据.xlsx')
df = pd.read_excel(r'NBA中国官方网站 _ 球员数据2.xlsx')

3.数据处理

用query函数进行数据筛选再用values.tolist()方法进行数据的转换

data1 = data.query(f'赛季=={year}')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
data2 = df.query(f'赛季=={year}')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()

4.每个方向的小标题文字的格式配置

.add_schema(
            schema=[
                opts.RadarIndicatorItem(name="场均得分", max_=32),
                opts.RadarIndicatorItem(name="场均篮板", max_=12),
                opts.RadarIndicatorItem(name="场均助攻", max_=12),
                opts.RadarIndicatorItem(name="场均抢断", max_=2),
                opts.RadarIndicatorItem(name="场均盖帽", max_=1.5),
            ],
            splitarea_opt=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
            textstyle_opts=opts.TextStyleOpts(color="#4587E7",#字体颜色
            font_style='normal',##字体样式 可选:'normal','italic','oblique'
            font_weight='bold',#字体宽度 可选粗细 'normal','bold','bolder','lighter' 
            font_family= 'monospace',#字体
            font_size=15 #字体大小
            ), #每个方向的小标题文字的格式配置
        )

5.添加两个需要比较的数据

.add(
            series_name="德安德烈·艾顿",
            data=data1,
            color = 'yellow',
            linestyle_opts=opts.LineStyleOpts(color="yellow"),
            areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
        )
.add(
            series_name="OG·阿奴诺比",
            data=data2,
            color = 'purple',
            linestyle_opts=opts.LineStyleOpts(color="purple"),
            areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
        )

6.配置数据标签

.set_series_opts配置一些数据系列参数

格式为:.set_global_opts(legend_opts=opts.LegendOpts(具体参数))

具体参数细则参考LegendOpts的参数详情网址:A Python Echarts Plotting Library

.set_series_opts(label_opts=opts.LabelOpts(is_show=True,color='white'))# 设置数据标签的格式

7.设置大标题,设置图例

.set_global_opts配置一些全局参数

格式为:.set_global_opts(title_opts=opts.TitleOpts(具体参数))

具体参数细则参考TitleOpts的参数详情网站:A Python Echarts Plotting Library

.set_global_opts(
            title_opts=opts.TitleOpts(title="基础雷达图",pos_left='3%',#大标题的位置可以为百分比
            title_textstyle_opts=opts.TextStyleOpts(color='#4587E7',font_size=32,font_weight='bold') #大标题文字的格式配置
            ), 
            legend_opts=opts.LegendOpts(pos_left='left',#图例横向的位置,left表示在左侧,可以为百分比
            pos_top='middle',#图例纵向的位置,middle表示中间位置,可以为百分比
            orient='vertical'#图例方式的方式 horizontal为横向vertical为纵向
            )
        ) 

8.创建时间轴组件

tl = Timeline()
tl.add_schema(
        is_auto_play=False, #选择播放
        # play_interval=1000,#播放时间间隔,毫秒
    )
for year in range(2017,2022+1):
    c = rader(year) # 雷达图
    tl.add(c,f'{year}年')
tl.render_notebook()

效果图

附完整代码

import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Radar
from pyecharts.charts import Timeline
data = pd.read_excel(r'NBA中国官方网站 _ 球员数据.xlsx')
df = pd.read_excel(r'NBA中国官方网站 _ 球员数据2.xlsx')
def rader(year):
    data1 = data.query(f'赛季=={year}')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
    data2 = df.query(f'赛季=={year}')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
    c=(
        Radar(init_opts=opts.InitOpts(bg_color="#CCCCCC")) #背景颜色
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="场均得分", max_=32),
                opts.RadarIndicatorItem(name="场均篮板", max_=12),
                opts.RadarIndicatorItem(name="场均助攻", max_=12),
                opts.RadarIndicatorItem(name="场均抢断", max_=2),
                opts.RadarIndicatorItem(name="场均盖帽", max_=1.5),
            ],
            splitarea_opt=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
            textstyle_opts=opts.TextStyleOpts(color="#4587E7",#字体颜色
            font_style='normal',##字体样式 可选:'normal','italic','oblique'
            font_weight='bold',#字体宽度 可选粗细 'normal','bold','bolder','lighter' 
            font_family= 'monospace',#字体
            font_size=15 #字体大小
            ), #每个方向的小标题文字的格式配置
        )
        .add(
            series_name="德安德烈·艾顿",
            data=data1,
            color = 'yellow',
            linestyle_opts=opts.LineStyleOpts(color="yellow"),
            areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
        )
        .add(
            series_name="OG·阿奴诺比",
            data=data2,
            color = 'purple',
            linestyle_opts=opts.LineStyleOpts(color="purple"),
            areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=True,color='white'))# 设置数据标签的格式
        .set_global_opts(
            title_opts=opts.TitleOpts(title="基础雷达图",pos_left='3%',#大标题的位置可以为百分比
            title_textstyle_opts=opts.TextStyleOpts(color='#4587E7',font_size=32,font_weight='bold') #大标题文字的格式配置
            ), 
            legend_opts=opts.LegendOpts(pos_left='left',#图例横向的位置,left表示在左侧,可以为百分比
            pos_top='middle',#图例纵向的位置,middle表示中间位置,可以为百分比
            orient='vertical'#图例方式的方式 horizontal为横向vertical为纵向
            )
        ) 
        
    )
    return c
tl = Timeline()
tl.add_schema(
        is_auto_play=False, #可选播放False为关闭
        # play_interval=1000,#播放时间间隔,毫秒
    )
for year in range(2017,2022+1):
    c = rader(year) # 雷达图
    tl.add(c,f'{year}年')
tl.render_notebook()

总结

雷达图是数据和信息可视化中一项非常重要的技术,也是我们必须掌握的技术之一。内容中可能会有一些不足和缺陷但也展示了学习的过程,在以后的工作中我们需要灵活地应用这些技术绘制各种雷达图,以更好地显示数据。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值