目录
前言:什么是数据可视化呢?
数据可视化是以图形的方式呈现结构化或非结构化数据,从而将隐藏在数据中的信息直接呈现给人们。但是有一个陷阱:它不仅仅是使用数据可视化工具将数据转化为图形。相反,它是从数据的角度看待世界。换句话说,数据可视化的对象是数据,把可视化作为探索世界的手段。
一、时间轴是什么
时间轴的制作主要是运用动画的形式,可以系统、完整的记录某一领域的发展足迹和详细事迹,通过互联网技术,依据时间顺序,把一方面或多方面的事件串联起来,形成相对完整的记录体系,再运用图文的形式呈现给用户,时间轴可以运用于不同领域。
二、雷达图是什么
雷达图(Radar Chart),也被称为蛛网图(Spider Chart)或星形图(Star Chart),是一种用来表示多维数据的图表。它以一个中心点为起点,沿着多个方向绘制出多个数据轴线,然后用不同的颜色或线条连接各个数据点,形成一个多边形。每个数据点代表一个维度,多边形的大小和形状反映了各维度数据之间的关系和差异。雷达图常用于比较多个对象或者评估一个对象的多个方面。
三、实现过程
首先安装pyecharts
在windows系统上就使用快捷键win+r打开运行窗口并直接输入cmd回车就能够以管理员身份启动命令提示符,其他操作系统找到终端并打开即可。然后在命令行中执行在线下载安装pyecharts库的命令,示例如下所示:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
1.导入相关的库
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Radar
from pyecharts.charts import Timeline
pandas:是基于numpy的一种工具,该工具是为了解决数据分析任务而创建的,它被广泛用于快速分析数据以及数据清洗和准备等工作。
2.导入数据
因为需要对比两个对象中谁更优秀,在这里我导入了两个数据,结果如图显示。
第一个数据代码示例:
df = pd.DataFrame(
{
'赛季':[2022,2021,2020,2019,2018],
'场均得分':[29.4,25.5,32,20.8,27.3],
'场均篮板':[6.1,5.2,5.5,5.2,5.4],
'场均助攻':[6.3,6.3,5.8,6.6,5.2],
'场均抢断':[0.9,1.3,1.2,1,1.3],
'场均盖帽':[0.4,0.4,0.1,0.4,0.4]
}
)
df
第二个数据代码示例:
df2 = pd.DataFrame(
{
'赛季':[2022,2021,2020,2019,2018],
'场均得分':[10.4,11.1,10.6,8.7,9.7],
'场均篮板':[3.2,3.4,3.2,2.2,0.6],
'场均助攻':[2.3,1.5,2.2,1.4,1.7],
'场均抢断':[0.9,0.7,0.9,0.3,0.6],
'场均盖帽':[0.2,0.3,0.2,0.2,0.2]
}
)
df2
3.做条件查询、数据筛选
在这里我用df里的数据作为参考,df2的数据也用同样的方法处理,或者如4.1一样一次性处理完
代码示例:
data = df.query('赛季==2022')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']]
data
4.将数据格式转换
我选用的是values.tolist()方法更改df列出并获取数据
代码示例:
datatmp = df.values.tolist()
print(datatmp[0])
4.1也可以选择两者结合写
代码示例:
data = df.query('赛季==2022')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
data
5.画雷达图,关于颜色和阴影面积的一些配置项
选择年份并查看雷达图里对比的数据,结果如图所示
代码示例:
def rader(year):
v1 = df.query(f'赛季=={year}')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
v2 = df2.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_=10),
opts.RadarIndicatorItem(name="场均篮板", max_=10),
opts.RadarIndicatorItem(name="场均助攻", max_=2),
opts.RadarIndicatorItem(name="场均抢断", max_=2),
opts.RadarIndicatorItem(name="场均盖帽", max_=2),
],
splitarea_opt=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1) #
),
textstyle_opts=opts.TextStyleOpts(color="#fff"),
)
.add(
series_name="库里",
data=v1,
color = 'blue',
linestyle_opts=opts.LineStyleOpts(color="blue"),
areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
)
.add(
series_name="格雷森-阿伦",
data=v2,
color = 'pink',
linestyle_opts=opts.LineStyleOpts(color="pink"),
areastyle_opts = opts.AreaStyleOpts(opacity=0.2) #设置不透明度为0.2
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 显示标签数据
.set_global_opts(
title_opts=opts.TitleOpts(title="基础雷达图"), legend_opts=opts.LegendOpts()
)
)
return c
6.创建时间轴组件
最后呈现的结果如图所示
代码示例:
tl = Timeline()
tl.add_schema(
is_auto_play=True,
play_interval=1000,#播放时间间隔,毫秒
)
for year in range(2018,2022+1):
c = rader(year) # 雷达图
tl.add(c,f'{year}年')
tl.render_notebook()
7、附完整代码
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Radar
from pyecharts.charts import Timeline
df = pd.DataFrame(
{
'赛季':[2022,2021,2020,2019,2018],
'场均得分':[29.4,25.5,32,20.8,27.3],
'场均篮板':[6.1,5.2,5.5,5.2,5.4],
'场均助攻':[6.3,6.3,5.8,6.6,5.2],
'场均抢断':[0.9,1.3,1.2,1,1.3],
'场均盖帽':[0.4,0.4,0.1,0.4,0.4]
}
)
df
df2 = pd.DataFrame(
{
'赛季':[2022,2021,2020,2019,2018],
'场均得分':[10.4,11.1,10.6,8.7,9.7],
'场均篮板':[3.2,3.4,3.2,2.2,0.6],
'场均助攻':[2.3,1.5,2.2,1.4,1.7],
'场均抢断':[0.9,0.7,0.9,0.3,0.6],
'场均盖帽':[0.2,0.3,0.2,0.2,0.2]
}
)
df2
# 2、做条件查询、数据筛选、数据格式转换
data = df.query('赛季==2022')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
data = df2.query('赛季==2022')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
data
# 3、画雷达图,关于颜色和阴影面积的一些配置项:
def rader(year):
v1 = df.query(f'赛季=={year}')[['场均得分','场均篮板','场均助攻','场均抢断','场均盖帽']].values.tolist()
v2 = df2.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_=10),
opts.RadarIndicatorItem(name="场均篮板", max_=10),
opts.RadarIndicatorItem(name="场均助攻", max_=2),
opts.RadarIndicatorItem(name="场均抢断", max_=2),
opts.RadarIndicatorItem(name="场均盖帽", max_=2),
],
splitarea_opt=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1) #
),
textstyle_opts=opts.TextStyleOpts(color="#fff"),
)
.add(
series_name="库里",
data=v1,
color = 'blue',
linestyle_opts=opts.LineStyleOpts(color="blue"),
areastyle_opts = opts.AreaStyleOpts(opacity=0.2)
)
.add(
series_name="格雷森-阿伦",
data=v2,
color = 'pink',
linestyle_opts=opts.LineStyleOpts(color="pink"),
areastyle_opts = opts.AreaStyleOpts(opacity=0.2) #设置不透明度为0.2
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 显示标签数据
.set_global_opts(
title_opts=opts.TitleOpts(title="基础雷达图"), legend_opts=opts.LegendOpts()
)
)
return c
c = rader(2022)
c.render_notebook()
# 5、创建时间轴组件
tl = Timeline()
tl.add_schema(
is_auto_play=True,
play_interval=1000,#播放时间间隔,毫秒
)
for year in range(2018,2022+1):
c = rader(year) # 雷达图
tl.add(c,f'{year}年')
tl.render_notebook()
四、总结
这是我学习数据可视化的内容之一,可能这篇文章呈现的内容也并不好,自己还有很多不足之处,但希望自己未来可以做得更好。