数据可视化—画基于雷达图的时间轴组件图形。

目录

前言:什么是数据可视化呢?

一、时间轴是什么

二、雷达图是什么

三、实现过程

首先安装pyecharts

1.导入相关的库

 2.导入数据

3.做条件查询、数据筛选

4.将数据格式转换 

 4.1也可以选择两者结合写

5.画雷达图,关于颜色和阴影面积的一些配置项

6.创建时间轴组件

7、附完整代码

四、总结 


前言:什么是数据可视化呢?

数据可视化是以图形的方式呈现结构化或非结构化数据,从而将隐藏在数据中的信息直接呈现给人们。但是有一个陷阱:它不仅仅是使用数据可视化工具将数据转化为图形。相反,它是从数据的角度看待世界。换句话说,数据可视化的对象是数据,把可视化作为探索世界的手段。

一、时间轴是什么

时间轴的制作主要是运用动画的形式,可以系统、完整的记录某一领域的发展足迹和详细事迹,通过互联网技术,依据时间顺序,把一方面或多方面的事件串联起来,形成相对完整的记录体系,再运用图文的形式呈现给用户,时间轴可以运用于不同领域。

二、雷达图是什么

雷达图(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()   
    

四、总结 

这是我学习数据可视化的内容之一,可能这篇文章呈现的内容也并不好,自己还有很多不足之处,但希望自己未来可以做得更好。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

db_qyt_2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值