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