python 绘图模块matplotlib的使用简介

作者:AsiaYe 时间:2023-08-09 19:09:01 

    上周对线上某几个磁盘进行了fio硬盘性能测试,测试完成之后的结果需要绘制成图像展示出来。我在官网上查找了一下fio自带的命令fio_generate_plot和fio2gnuplot工具的用法,找到了图像的绘制方法,在某一个单一的场景下,确实可以使用这两个工具来进行硬盘性能图像绘制,但是问题是,如果要对比多个场景下绘制出来的图像的差异,fio自带的绘图工具实现起来就有些困难了,但是确实也能实现。例如下图:

python 绘图模块matplotlib的使用简介

如图所示为磁盘iodepth不变,numjobs在(1,8,16)三种不同的场景下绘制出来的结果,具体怎么绘制的,原谅我暂时也没找到办法。这是前人绘制出来的图像。

那么为了换一种思路解决这个问题,我查找了python的绘图方法,找到了使用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()

这里我绘制了最简单的2条曲线,ax这个变量里面可以继续添加需要plot的x数组和y数组,这样就可以在一张图里面绘制若干条线。来看上面代码绘制的结果图:

python 绘图模块matplotlib的使用简介

可以看到有两条线:

第一条是蓝色的线,也就是:

ax.plot([1,2,3,4])

这条命令传入的参数代表纵坐标的值,因为没有传递横坐标,因此横坐标默认从0开始,以1位单位递增。

第二条是橙色的线条:

ax.plot([1,2,3,4],[2,3,4,5])

这条命令第一个数组是x轴的数组,第二个数组是Y轴的数组

这两条线出现了部分重复的地方,所以看上去像是一条直线一样。

有了这个绘制的思路,我们就可以将我们需要绘制的点,放在两个list里面,其中一个作为横坐标,另外一个作为纵坐标,这样就可以绘制出来我们想要的图像了,关于图像的标题、横纵坐标说明、图示等等,都可以使用对应的函数来进行丰富。具体的绘制方法,可以参考网上更加详细的模块说明,这里我就提供一个思路,希望对大家有帮助。

最后,上一下利用python画出来的几张磁盘性能的图,可以跟上面的图进行对比:

python 绘图模块matplotlib的使用简介

来源:https://cloud.tencent.com/developer/article/1737711

标签:python,绘图模块,matplotlib
0
投稿

猜你喜欢

  • 一些需要禁用的PHP危险函数(disable_functions)

    2023-11-23 15:29:25
  • 无组件上传图片到数据库中,asp解决方案

    2007-08-03 13:22:00
  • Pandas.DataFrame删除指定行和列(drop)的实现

    2022-05-27 16:15:55
  • python: 自动安装缺失库文件的方法

    2023-08-30 05:42:38
  • 使用Keras实现Tensor的相乘和相加代码

    2021-08-04 14:10:57
  • JSON.stringify转换JSON时日期时间不准确的解决方法

    2014-07-20 13:25:07
  • Design IT. (3),看不懂数据

    2009-02-11 10:56:00
  • MySQL索引背后的之使用策略及优化(高性能索引策略)

    2024-01-23 04:21:19
  • Python协程实践分享

    2023-09-01 05:50:51
  • springboot整合单机缓存ehcache的实现

    2023-11-09 15:27:24
  • 使用Python绘制三种概率曲线详解

    2022-07-27 00:21:01
  • Django表单外键选项初始化的问题及解决方法

    2022-07-09 04:28:42
  • js+ajax实现获取文件大小的方法

    2023-08-12 00:22:07
  • 简述:我为什么选择Python而不是Matlab和R语言

    2021-05-13 06:51:27
  • Python中垃圾回收和del语句详解

    2023-12-20 01:02:55
  • FrontPage XP中的设计技巧

    2008-07-17 10:49:00
  • Python3 列表,数组,矩阵的相互转换的方法示例

    2023-05-30 23:52:19
  • MySQL SQL语句优化的10条建议

    2024-01-19 23:41:28
  • python实现邮件循环自动发件功能

    2021-01-20 02:39:24
  • 深入理解python对json的操作总结

    2022-04-08 20:36:01
  • asp之家 网络编程 m.aspxhome.com