目录
1.导入所需的pandas库pyecharts库还有相关的包
前言
通过使用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()
总结
雷达图是数据和信息可视化中一项非常重要的技术,也是我们必须掌握的技术之一。内容中可能会有一些不足和缺陷但也展示了学习的过程,在以后的工作中我们需要灵活地应用这些技术绘制各种雷达图,以更好地显示数据。