b@1599: import sys b@1599: import os b@1599: import csv b@1599: import matplotlib.pyplot as plt b@1599: import numpy as np b@1599: b@1599: rating_folder = 'ratings/' # folder with rating csv files b@1599: show_individual = 'frank' b@1599: b@1599: # get every csv file in folder b@1599: for file in os.listdir(rating_folder): # You have to put this in folder where rating csv files are. b@1599: if file.endswith(".csv"): b@1599: page_name = file[:-4] # file name (without extension) is page ID b@1599: b@1599: # get header b@1599: with open(rating_folder+file, 'r') as readfile: # read this csv file b@1599: filereader = csv.reader(readfile, delimiter=',') b@1599: headerrow = filereader.next() # use headerrow as X-axis b@1599: headerrow = headerrow[1:] b@1599: b@1599: # read ratings into matrix b@1599: ratings = np.loadtxt(open(rating_folder+file,"rb"), b@1599: delimiter=",", b@1599: skiprows=1, b@1599: usecols=range(1,len(headerrow)+1) b@1599: ) b@1599: b@1599: # draw boxplot b@1599: plt.boxplot(ratings) b@1599: b@1599: # add rating of individual(s) b@1599: with open(rating_folder+file, 'r') as readfile: # read this csv file b@1599: filereader = csv.reader(readfile, delimiter=',') b@1599: headerrow = filereader.next() # use headerrow as X-axis b@1599: headerrow = headerrow[1:] b@1599: markerlist = ["x", ".", "o", "*", "+", "v", ">", "<", "8", "s", "p"] b@1599: increment = 0 b@1599: linehandles = [] b@1599: legendnames = [] b@1599: for row in filereader: b@1599: subject_id = row[0][:-4] b@1599: if subject_id in show_individual: b@1599: plothandle, = plt.plot(range(1,len(row)), # x-values b@1599: row[1:], # y-values: csv values except subject name b@1599: color='k', b@1599: marker=markerlist[increment%len(markerlist)], b@1599: markersize=10, b@1599: linestyle='None', b@1599: label=subject_id b@1599: ) b@1599: increment += 1 # increase counter b@1599: linehandles.append(plothandle) b@1599: legendnames.append(subject_id) b@1599: plt.legend(linehandles, legendnames, b@1599: loc='upper right', b@1599: bbox_to_anchor=(1.1, 1), borderaxespad=0.) b@1599: b@1599: b@1599: plt.xlabel('Fragment') b@1599: plt.title('Box plot '+page_name) b@1599: plt.xlim(0, len(headerrow)+1) # only show relevant region, leave space left & right) b@1599: plt.xticks(range(1, len(headerrow)+1), headerrow) # show fragment names b@1599: b@1599: plt.ylabel('Rating') b@1599: plt.ylim(0,1) b@1599: b@1599: plt.show() b@1599: #exit() b@1599: b@1599: #TODO Save output automatically