comparison scripts/score_boxplot.py @ 921:533d51508e93

Stash for project creator
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Mon, 01 Jun 2015 12:55:21 +0100
parents
children 4a0bfa7bef24
comparison
equal deleted inserted replaced
-1:000000000000 921:533d51508e93
1 import sys
2 import os
3 import csv
4 import matplotlib.pyplot as plt
5 import numpy as np
6
7 rating_folder = 'ratings/' # folder with rating csv files
8 show_individual = 'frank'
9
10 # get every csv file in folder
11 for file in os.listdir(rating_folder): # You have to put this in folder where rating csv files are.
12 if file.endswith(".csv"):
13 page_name = file[:-4] # file name (without extension) is page ID
14
15 # get header
16 with open(rating_folder+file, 'r') as readfile: # read this csv file
17 filereader = csv.reader(readfile, delimiter=',')
18 headerrow = filereader.next() # use headerrow as X-axis
19 headerrow = headerrow[1:]
20
21 # read ratings into matrix
22 ratings = np.loadtxt(open(rating_folder+file,"rb"),
23 delimiter=",",
24 skiprows=1,
25 usecols=range(1,len(headerrow)+1)
26 )
27
28 # draw boxplot
29 plt.boxplot(ratings)
30
31 # add rating of individual(s)
32 with open(rating_folder+file, 'r') as readfile: # read this csv file
33 filereader = csv.reader(readfile, delimiter=',')
34 headerrow = filereader.next() # use headerrow as X-axis
35 headerrow = headerrow[1:]
36 markerlist = ["x", ".", "o", "*", "+", "v", ">", "<", "8", "s", "p"]
37 increment = 0
38 linehandles = []
39 legendnames = []
40 for row in filereader:
41 subject_id = row[0][:-4]
42 if subject_id in show_individual:
43 plothandle, = plt.plot(range(1,len(row)), # x-values
44 row[1:], # y-values: csv values except subject name
45 color='k',
46 marker=markerlist[increment%len(markerlist)],
47 markersize=10,
48 linestyle='None',
49 label=subject_id
50 )
51 increment += 1 # increase counter
52 linehandles.append(plothandle)
53 legendnames.append(subject_id)
54 plt.legend(linehandles, legendnames,
55 loc='upper right',
56 bbox_to_anchor=(1.1, 1), borderaxespad=0.)
57
58
59 plt.xlabel('Fragment')
60 plt.title('Box plot '+page_name)
61 plt.xlim(0, len(headerrow)+1) # only show relevant region, leave space left & right)
62 plt.xticks(range(1, len(headerrow)+1), headerrow) # show fragment names
63
64 plt.ylabel('Rating')
65 plt.ylim(0,1)
66
67 plt.show()
68 #exit()
69
70 #TODO Save output automatically
71