source: hudson/performance/figure.py @ 2572

Revision 2572, 2.2 KB checked in by wehart, 3 years ago (diff)

Further updates

  • Property svn:executable set to *
Line 
1import matplotlib.pyplot as plt
2from matplotlib.backends.backend_pdf import PdfPages
3import os
4import os.path
5import csv
6import math
7import sys
8
9
10def read_table(filename):
11    if not os.path.exists(filename):
12        raise IOError, "No file %s" % filename
13    table = []
14    for row in csv.reader(open(filename,'rb')):
15        if len(table) == 0:
16            table = map(lambda x:[x], row)
17        else:
18            for i in range(0,len(row)):
19                if row[i] == '':
20                    table[i].append(None)
21                else:
22                    table[i].append(eval(row[i]))
23    return table
24               
25       
26def plot_table(table, filename):
27    #print table
28    N = len(table)-1
29    pp = PdfPages(filename)
30    #print "HERE", N, int(math.ceil(N/3.)), 3
31
32    if True:
33        X = 1
34        for i in range(1,N+1):
35            plt.subplot(5, 1, X)
36            plt.plot(table[0][1:],table[i][1:])
37            plt.title(table[i][0], fontsize=8)
38            plt.tick_params(labelsize=8)
39            plt.subplots_adjust(wspace=0.5, hspace=0.5)
40            ymin, ymax = plt.ylim()
41            plt.ylim( (0, 1.05*ymax) )
42            X += 1
43            if X > 5:
44                X = 0
45                plt.savefig(pp, format='pdf')
46                plt.clf()
47    else:
48        X = 0
49        Y = 0
50        for i in range(1,N+1):
51            if X == 0 and Y == 0:
52                fig, axs = plt.subplots(nrows=4, ncols=2, sharex=True)
53            ax = axs[X,Y]
54            ax.set_title(table[i][0], fontsize=8)
55            ax.plot(table[0][1:],table[i][1:])
56            ax.tick_params(labelsize=8)
57            plt.subplots_adjust(wspace=0.5, hspace=0.5)
58            Y += 1
59            if Y == 2:
60                X += 1
61                Y = 0
62            if X == 4:
63                X = 0
64                pp.savefig(fig)
65
66    pp.close()
67
68def create_figure(csvfile, figfile):
69    #print os.getcwd()
70    table = read_table(csvfile)
71    print "Creating image file %s" % figfile
72    plot_table(table, figfile)
73
74if __name__ == '__main__':
75    for file in sys.argv[1:]:
76        create_figure(file, os.path.splitext(file)[0]+'.pdf')
77
Note: See TracBrowser for help on using the repository browser.