使用Python matplotlib绘制fio磁盘性能测试对比图
本文介绍如何利用Python的matplotlib模块解决fio自带绘图工具在多场景对比下的局限。通过示例演示如何安装模块,并详细讲解使用plot函数绘制单纵坐标及双坐标曲线的方法,最终实现多条件磁盘性能数据的可视化对比,辅助技术分析与决策。
上周对线上部分磁盘执行了fio性能测试,测试结束后需将结果可视化。查阅官网后了解到fio自带fio_generate_plot和fio2gnuplot两个绘图工具,在单一场景下可正常生成图像。然而,当需要对比多个场景下的图像差异时,使用这些自带工具实现起来较为繁琐,尽管技术上可行。示例如下:

上图展示了在磁盘iodepth保持不变的情况下,numjobs分别为1、8和16三种不同场景的绘制结果。具体绘制细节此处暂不展开,该图为前人绘制的示例。
为解决上述问题,尝试采用Python绘图方案,利用matplotlib模块绘制多条曲线。若环境中未预装该模块,需先执行以下命令进行安装:
pip install matplotlib命令来进行安装。
接下来演示matplotlib绘制曲线的基本方法:
# /usr/bin/env python # -*- coding=utf-8 -*- import matplotlib.pyplot as plt def PlotDemo1(): fig = plt.figure() # figure对象可以看成整个图表。在figure图表之上增加多个子图,然后在子图之上绘制点和线 # 通过add_subplot增加子图(返回了一个axes坐标轴),该方法需要三个参数,分别为:numrows, numcols, fignum。其中,一共有numrows*numcols个子图, # 将图表分为N行*M列,fignum标识了该子图的顺序,其范围从1到numrows*numcols。在上例中1,1,1表示了该绘图对象仅有1个子图,也就是1*1类型 ax = fig.add_subplot(1, 1, 1) ax.plot([1, 2, 3, 4]) # 指定纵坐标,此时横坐标数量会自动设置的和纵坐标数量相等,从0开始,也就是横坐标会变成[0,1,2,3] ax.plot([1,2,3,4],[2,3,4,5]) # 指定横坐标和纵坐标,绘制另外一条曲线 plt.show() PlotDemo1()
此处以最简单的两条曲线为例,ax变量中可继续添加需要plot的x数组和y数组,从而在单张图中绘制多条线条。上述代码生成的结果图如下:

图中可见两条曲线:
第一条为蓝色曲线,对应代码:
ax.plot([1,2,3,4])
该命令传入的参数代表纵坐标值。由于未传递横坐标,系统默认横坐标从0开始,以1为单位递增。
第二条为橙色曲线:
ax.plot([1,2,3,4],[2,3,4,5])
该命令中,第一个数组代表x轴数据,第二个数组代表y轴数据。
由于这两条线存在部分重叠,视觉上可能呈现为一条直线的效果。
基于此思路,可将待绘制的点数据分别存入两个列表中,一个作为横坐标,另一个作为纵坐标,即可生成所需图像。关于图像标题、坐标轴说明及图例等细节,均可通过相应函数进行丰富。具体绘制细节可参考官方更详尽的模块文档,此处仅提供一种实现思路,供参考。
最后,展示利用Python绘制的几张磁盘性能对比图,可与前述图像进行对照:

以上为python 绘图模块matplotlib的使用简介的详细内容,更多关于python 绘图模块matplotlib的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









