工作中经常要分析数据,比如网络并发量,DC响应时间等,借用matplotlib将数据生成曲线图,可以直观地分析数据的变化情况。
下面是生成曲线图的脚本,实际使用时修改某些值定制一下即可。
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3"""
4File Function: 读取数据文件,生成曲线图
5data source format:
6 51 07:27:46
7 106 07:27:47
8 139 07:27:48
9 326 07:27:49
10 185 07:27:50
11 ..
12Author: Kevin Hou
13Date: 2013/01/22
14"""
15
16import matplotlib.pyplot as pl
17from matplotlib.ticker import MultipleLocator, FuncFormatter
18import numpy as np
19
20MultipleLocator.MAXTICKS = 100000
21
22fig = pl.figure(figsize=(10,6))
23
24#77为文件数据个数
25x = np.arange(0, 77, 1)
26y = []
27z = []
28t = []
29
30f = open("yr_nr.txt","r")
31num=0
32for l in f:
33 y.append(int(l.strip().split(" ")[0]))
34 #隔两个点显示一个label,否则x轴显示不下
35 if num%3==0:
36 t.append(l.strip().split(" ")[1])
37 num += 1
38f.close()
39pl.plot(x, y, label='YR', color='red')
40
41f = open("kk_nr.txt","r")
42for l in f:
43 z.append(int(l.strip().split(" ")[0]))
44f.close()
45pl.plot(x, z, label='KK')
46
47ax = pl.gca()
48
49# 设置两个坐标轴的范围
50pl.ylim(0,800)
51pl.xlim(0, np.max(x))
52
53# 设置图的底边距
54pl.subplots_adjust(bottom = 0.15)
55
56pl.grid() #开启网格
57
58# 主刻度
59ax.xaxis.set_major_locator( MultipleLocator(3) )
60ax.yaxis.set_major_locator( MultipleLocator(50) )
61
62# 主刻度文本用time_formatter函数计算
63#ax.xaxis.set_major_formatter( FuncFormatter( time_formatter ) )
64
65# 副刻度为
66#ax.xaxis.set_minor_locator( MultipleLocator(np.pi/20) )
67
68#获取当前x轴的label
69locs,labels = pl.xticks()
70#重新设置新的label,用时间t设置
71pl.xticks(locs, t)
72
73pl.ylabel("Number")
74pl.title("WCG => Samba")
75
76# 设置刻度文本的大小
77#for tick in ax.xaxis.get_major_ticks():
78# tick.label1.set_fontsize(5)
79#pl.show()
80pl.legend()
81
82#自动调整label显示方式,如果太挤则倾斜显示
83fig.autofmt_xdate()
84
85#保存曲线为图片格式
86pl.savefig("wcg.png") 生成的曲线图: