软件测试|使用Python绘制雷达图(二)

举报
Tester_muller 发表于 2023/03/05 10:40:35 2023/03/05
【摘要】 前言之前我们用matplotlib绘制了雷达图,可能代码量会相对多一些,今天我想起了我们之前介绍过的pyecharts,这个绘图神器,也是支持绘制雷达图的,今天我们来看看实现起来会不会更简单。我们还是以买车的朋友选择来作为我们的数据进行绘制。 绘制基础雷达图我们还是以我那位朋友为例,他买车的例子确实比较经典,所以我们还是那6个选择,pyecharts支持绘制的图形中就包括了雷达图,引入代码...

前言

之前我们用matplotlib绘制了雷达图,可能代码量会相对多一些,今天我想起了我们之前介绍过的pyecharts,这个绘图神器,也是支持绘制雷达图的,今天我们来看看实现起来会不会更简单。我们还是以买车的朋友选择来作为我们的数据进行绘制。

绘制基础雷达图

我们还是以我那位朋友为例,他买车的例子确实比较经典,所以我们还是那6个选择,pyecharts支持绘制的图形中就包括了雷达图,引入代码如下:

from pyecharts.charts import Radar

我们先绘制一下单车型的雷达图,选择使用帕萨特的数据进行绘制,代码如下:

import pyecharts.options as op
from pyecharts.charts import Radar

v1 = [[85, 75, 90, 70, 90]]

x_schema = [
        {"name": "舒适性",  "color": 'black', "font_size": 18},
        {"name": "油耗",  "color": 'black', "font_size": 18},
        {"name": "性能", "color": 'black', "font_size": 18},
        {"name": "安全",  "color": 'black', "font_size": 18},
        {"name": "操控",  "color": 'black', "font_size": 18}
    ]

radar_x = Radar()
radar_x.add_schema(x_schema)
radar_x.add('帕萨特', v1, color='red').set_colors(['red'])

radar_x.set_global_opts(
        title_opts=op.TitleOpts(title="car_type", pos_right="center"),
        legend_opts=op.LegendOpts(legend_icon="roundRect", align="left", pos_left='7%',
                                  pos_bottom='14%', orient='vertical')
    )

radar_x.render("car_type.html")

绘制的图像如下:

在这里插入图片描述

绘制全部车型雷达图

我们需要将其他车型的数据也写成上面的帕萨特例子的形式,代码如下:

import pyecharts.options as op
from pyecharts.charts import Radar

# 传入多维数据,数据点最多6个
v1 = [[85, 75, 90, 70, 90]]
v2 = [[87, 72, 95, 75, 95]]
v3 = [[80, 95, 70, 85, 80]]
v4 = [[85, 90, 75, 85, 75]]
v5 = [[85, 85, 80, 80, 85]]
v6 = [[75, 90, 82, 85, 88]]


# 调整雷达各维度的范围大小,维度要求四维以上
x_schema = [
        {"name": "舒适性",  "color": 'black', "font_size": 18},
        {"name": "油耗",  "color": 'black', "font_size": 18},
        {"name": "性能",  "color": 'black', "font_size": 18},
        {"name": "安全",  "color": 'black', "font_size": 18},
        {"name": "操控",  "color": 'black', "font_size": 18}
    ]

# 画图
radar_x = Radar()
radar_x.add_schema(x_schema)
radar_x.add('帕萨特', v1, color='red').set_colors(['red'])
radar_x.add('迈腾', v2, color='green').set_colors(['green'])
radar_x.add('凯美瑞', v3, color='orange').set_colors(['orange'])
radar_x.add('亚洲龙', v4, color='blue').set_colors(['blue'])
radar_x.add('天籁', v5, color='purple').set_colors(['purple'])
radar_x.add('雅阁', v6, color='yellow').set_colors(['yellow'])

radar_x.set_global_opts(
        title_opts=op.TitleOpts(title="car_type", pos_right="center"),
        legend_opts=op.LegendOpts(legend_icon="roundRect", align="left", pos_left='7%',
                                  pos_bottom='14%', orient='vertical')
    )

radar_x.render("car_type.html")

绘制的图像如下所示:

在这里插入图片描述

图像优化

我们看到,因为分值差距不大,导致图像非常密集,因此我们可以传入各项分值的最低值与最高值,更便于我们查看各项数据的差异。代码如下:

import pyecharts.options as op
from pyecharts.charts import Radar

# 传入多维数据,数据点最多6个
v1 = [[85, 75, 90, 70, 90]]
v2 = [[87, 72, 95, 75, 95]]
v3 = [[80, 95, 70, 85, 80]]
v4 = [[85, 90, 75, 85, 75]]
v5 = [[85, 85, 80, 80, 85]]
v6 = [[75, 90, 82, 85, 88]]


# 调整雷达各维度的范围大小,维度要求四维以上
x_schema = [
        {"name": "舒适性", "max": 90, "min": 75, "color": 'black', "font_size": 18},
        {"name": "油耗", "max": 100, "min": 65, "color": 'black', "font_size": 18},
        {"name": "性能", "max": 100, "min": 65, "color": 'black', "font_size": 18},
        {"name": "安全", "max": 100, "min": 65, "color": 'black', "font_size": 18},
        {"name": "操控", "max": 100, "min": 65, "color": 'black', "font_size": 18}
    ]

# x_schema = [
#         {"name": "舒适性",  "color": 'black', "font_size": 18},
#         {"name": "油耗",  "color": 'black', "font_size": 18},
#         {"name": "性能",  "color": 'black', "font_size": 18},
#         {"name": "安全",  "color": 'black', "font_size": 18},
#         {"name": "操控", "color": 'black', "font_size": 18}
#     ]

# 画图
radar_x = Radar()
radar_x.add_schema(x_schema)
radar_x.add('帕萨特', v1, color='red').set_colors(['red'])
radar_x.add('迈腾', v2, color='green').set_colors(['green'])
radar_x.add('凯美瑞', v3, color='orange').set_colors(['orange'])
radar_x.add('亚洲龙', v4, color='blue').set_colors(['blue'])
radar_x.add('天籁', v5, color='purple').set_colors(['purple'])
radar_x.add('雅阁', v6, color='yellow').set_colors(['yellow'])

radar_x.set_global_opts(
        title_opts=op.TitleOpts(title="car_type", pos_right="center"),
        legend_opts=op.LegendOpts(legend_icon="roundRect", align="left", pos_left='7%',
                                  pos_bottom='14%', orient='vertical')
    )

radar_x.render("car_type.html")

新绘制的图像如下所示:

在这里插入图片描述
同样地,如果我们要对比某两款车型的数据,只需要将其他车型置灰即可,如下所示:

在这里插入图片描述

总结

本文主要介绍了使用pyecharts绘制雷达图的方法,相比于matplotlib,pyecharts更加方便一些,对于不同对象的对比更为方便,可以隐藏部分对象,同时,可以对不同维度设置不同的范围,对于差距较小的维度,可以展示出更微小直观的差距。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。