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