annotate scripts/score_boxplot.py @ 1546:11218378feef

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