matplotlib 散点图绘制
2014-08-31 22:46
507 查看
最近SSD抖动测试需要绘制散点图,想用python来实现,通过google摸索,发现matplotlib模块很是强大,基本可以实现所以的图形绘制需求,这里做下matplotlib笔记记录。
测试环境:
ubuntu 14.04
安装: apt-get install python-matplotlib
python版本:2.7
问题需求:
fio 测试SSD随机/顺序 读/写 4个项目,每10S记录一次iops数据,每个项目5小时。 最后每个项目会有1800个数据。 需要将1800 * 4 个数据绘制在同一张图,直观的看出数值抖动性的变化!
以下就是实验效果(注时间问题,仅测试一个项目,其余项目数据为构造,仅测试图形绘制功能)
代码以及解释如下:
#!/usr/bin/env python #coding:utf-8 #dec:ssd_iops_jitter draw #pylt ver1 import matplotlib matplotlib.use('Agg') #不加有报错 import matplotlib.pyplot as plt fig, ax = plt.subplots() rr_file = 'random_read.jdata' sr_file = 'seq_read.jdata' rw_file = 'random_write.jdata' sw_file = 'seq_write.jdata' data_dt ={ 'rr':['+g','random_read_4k',rr_file], #字典方式存储散点图标,颜色;图示名称;数据文件 'sr':['*b','seq_read_4k',sr_file], 'rw':['3r','random_write_64k',rw_file], 'sw':['2m','seq_write_64k',sw_file] } def get_file_data(filename): with open(filename,'r') as f: ct = f.read().split("\n") return ct def get_ssd_name(): with open('ssdname','r') as f: name = f.read().strip() return name def get_ymax(l): #获取y轴最大值 max_key = 0 for item in l: if item > max_key: max_key = item ymax = max_key + 10000 return ymax def get_ymin(l): #获取y轴最小值 min_key = 1000000 for item in l: if item < min_key: min_key = item if min_key - 10000: ymin = min_key - 5000 else: ymin = min_key return ymin def plot_setting(): s = [ 'rr', 'sr', 'rw', 'sw' ] max_list = [] min_list = [] for key in s: t = get_file_data(data_dt[key][2]) x = [ int(value.split()[0]) for value in t if value ] y = [ int(value.split()[1]) for value in t if value ] ax.plot(x, y, data_dt[key][0],label=data_dt[key][1]) #绘制散点,x,y分别会x,y轴数据列表;第3,4个位置参数分别为散点图标,label名称 max_list.append(max(y)) min_list.append(min(y)) y_max = get_ymax(max_list) y_min = get_ymin(min_list) #定义坐标轴与名称 plt.ylim(y_min,y_max) plt.xlim(0,18000) plt.ylabel("iops") plt.xlabel("time(ms)") #图示与字体设置 plt.rc('font', size=8) plt.legend(loc=0, numpoints=1) leg = plt.gca().get_legend() ltext = leg.get_texts() plt.setp(ltext, fontsize='small') #标题 ax.set_title(get_ssd_name()) plt.savefig('result/ssdTest.png') if __name__ == '__main__': plot_setting()
参考:
http://blog.csdn.net/kkxgx/article/details/6951959http://sebug.net/paper/books/scipydoc/matplotlib_intro.html http://matplotlib.org/users/legend_guide.html
相关文章推荐
- Python+matplotlib绘制不同大小和颜色散点图实例
- matplotlib基础__之__绘制散点图
- 十、matplotlib系列---pyplot散点图的绘制
- matplotlib —— 绘制条形图,直方图,散点图和饼图
- [转]用Matplotlib绘制 折线图 散点图 柱状图 圆饼图
- matplotlib绘制余弦的散点图
- matplotlib学习之scatter函数--绘制散点图
- 画图工具matplotlib简单实用--绘制散点图
- matplotlib绘制折线图与散点图
- python matplotlib模块——绘制三维图形、三维数据散点图
- 使用matplotlib绘制散点图
- 使用matplotlib绘制散点图
- python matplotlib模块——绘制三维图形、三维数据散点图
- matplotlib绘制散点图
- Python使用matplotlib绘制余弦的散点图示例
- Python Matplotlib实现三维数据的散点图绘制
- python matplotlib从文件中读取数据绘制散点图
- matplotlib的基本用法(七)——绘制散点图
- Python 3基础教程48-Matplotlib绘制散点图和柱状图
- python3机器学习实战 kNN实现+matplotlib绘制散点图