使用Python matplotlib绘制fio磁盘性能测试对比图

林舟
林舟
发布时间:2026-10-12| 3人浏览过
原创

本文介绍如何利用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的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。