首页 > 编程语言 >软件测试|使用Python绘制雷达图

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

时间:2024-03-14 17:23:32浏览次数:38  
标签:name radar Python 18 color black font 绘制 软件测试

前言

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

 

绘制基础雷达图

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更加方便一些,对于不同对象的对比更为方便,可以隐藏部分对象,同时,可以对不同维度设置不同的范围,对于差距较小的维度,可以展示出更微小直观的差距。

标签:name,radar,Python,18,color,black,font,绘制,软件测试
From: https://www.cnblogs.com/ltkekeli1229/p/18073347

相关文章

  • Python实现BOA蝴蝶优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景蝴蝶优化算法(butterflyoptimizationalgorithm,BOA)是Arora等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,......
  • Python实现BOA蝴蝶优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景蝴蝶优化算法(butterflyoptimizationalgorithm,BOA)是Arora等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,......
  • python内置函数 D
    python内置函数DPython解释器内置了很多函数和类型,任何时候都能使用。D名称描述delattr删除对象的属性。dict创建字典对象。dir列出对象的属性。divmod同时执行除法运算和取模运算,返回一个包含商和余数的元组。delattr(object,name)delattr()是一个内置函数,用于删除......
  • 入门必看:写给 Python 小伙伴的一些建议
    写在前面不知不觉作为一名Python开发工程师也有好几年的时间了,对于Python总想写点总结,却又不知从何开始。随着公司项目不断转向Java,我隐约的觉得Python的生涯也将迎来终结,所以近期抽个空下这篇关于Python的一些总结。正文开始先看一个Python3CheatSheet,忘了......
  • 【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程
    【2024】批量查询CSDN文章质量分写在最前面一、分析获取步骤二、获取文章列表1.前期准备2.获取文章的接口3.接口测试(更新重点)三、查询质量分1.前期准备2.获取文章的接口3.接口测试四、python代码实现1.分步实现2.批量获取文章信息3.从excel中读取文章url,查询......
  • 自学Python第一步,记住这7大编码规范
    一、缩进每一级缩进4个空格。续行应该与包裹元素对齐,要么使用圆括号,方括号,花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐。当使用挂行缩进对齐时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行。对齐缩进(左右括号对齐)deflong_function_name(var_......
  • 4大软件测试策略的特点和区别(单元测试、集成测试、确认测试和系统测试)
    四大软件测试策略分别是单元测试、集成测试、确认测试和系统测试。一、单元测试单元测试也称为模块测试,它针对软件中的最小单元(如函数、方法、类、模块等)进行测试,以验证其是否符合预期的行为和结果。单元测试通常由开发人员编写,目的是在开发过程中尽早发现和修复错误,从而提高软......
  • Python 中 Panda 库 处理表格方法
    1.导入Pandas库importpandasaspd2.创建DataFrame对象#从列表创建data=[['Alice',25],['Bob',30],['Charlie',35]]df=pd.DataFrame(data,columns=['Name','Age'])#从字典创建data={'Name':[&#......
  • [USACO | Python] 201602B2 Circular Barn
    作为当代建筑的粉丝,农民约翰(John)建造了一个完美圆形的新谷仓。在里面,谷仓由n环组成房间,从1…n的顺时针方向编号。房间的有n个(1<=n<=1000)。每一间房间都有三扇门,两扇分别通往临近的房间,一扇通往谷仓的外面。FarmerJohn想要有准确的ri头牛在房间r中(1<=ri<=100),他......
  • Python实现ws订阅服务
    一、Python实现ws订阅服务#使用websocket订阅欧易公共频道中的行情频道,以下是已知信息,写出Python代码#地址:"wss://wspap.okx.com:8443/ws/v5/public?brokerId=9999"#请求示例:#{#"op":"subscribe",#"args":[{#"channel":"......