def plotDegreeDistribution(self,degreeList,GameCount,dataType, gameType): p = Preprocess() cachePath = '/home/yotoo/Project/comparison/' plotPath = '/home/yotoo/Project/logPlot/' # details about the data maximum = degreeList[len(degreeList)-1] dist = {} for d in degreeList: for i in range(1,maximum+1): if (d == i): if(dist.has_key(i)==False): dist[i] = 1 else: degree = dist[i] degree = degree + 1 dist[i] = degree else: continue print dist.items() # plot degree distribution degrees = dist.keys() players = dist.values() #details about this distribution sortedP = dist.values() sortedP.sort() sortedD = dist.keys() sortedD.sort() minimum = sortedP[0] sortedP.reverse() maximum = sortedP[0] playerCount = len(players) degreeCount = len(degrees) medianIndex = (minimum + degreeCount) / 2 Q1Index = (minimum + medianIndex) / 2 Q3Index = (medianIndex + degreeCount) / 2 median = sortedD[medianIndex] Q1 = sortedD[Q1Index] Q3 = sortedD[Q3Index] kurtosis = self.getKurtosisSkewness(degrees) plotText = 'Total Games: %d \nTotal Players: %d \nMaximum Degree: %d \nQ3 Degree: %d\nMedian Degree: %d \nQ1 Degree: %d \nMinimum Degree: %d \nKurtosis: %.2e' %(GameCount,playerCount,maximum,Q3,median,Q1,minimum,kurtosis) #dataType if (dataType == 'Real Data'): savePath = plotPath + 'real_data/' if (gameType == '19+ranked'): title = 'Degree Distribution(Border size: 19; Game Type: Ranked)' # # original plt.grid(True) plt.xlabel('Degree') plt.ylabel('Players') plt.title(title) plt.plot(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' original' + ".png") plt.show() # # log degree plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Players') plt.title(title) plt.semilogx(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' log x' + ".png") plt.show() # # log players plt.grid(True) plt.xlabel('Degree') plt.ylabel(' Log Players') plt.title(title) plt.semilogy(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' log y' + ".png") plt.show() # # log degrees and players plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Log Players') plt.title(title) plt.loglog(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' log x y' + ".png") plt.show() # # plot 4-up images for original, log x and y, log x, log y # original plt.subplot(221) plt.plot(degrees,players,'ro') plt.title('Original Plot') plt.grid(True) #log degrees plt.subplot(222) plt.semilogx(degrees,players,'ro') plt.title('Log Degrees') plt.grid(True) #log players plt.subplot(223) plt.semilogy(degrees,players,'ro') plt.title('Log Players') plt.grid(True) #log degrees and players plt.subplot(224) plt.loglog(degrees,players,'ro') plt.title('Log Degrees and Players') plt.grid(True) plt.savefig(savePath + "random_data_19_ranked_4_ups.png") plt.show() p.save(dist,cachePath+title+'.txt') elif (gameType == '19+free'): title = 'Degree Distribution(Border size: 19; Game Type: Free)' # # original plt.grid(True) plt.xlabel('Degree') plt.ylabel('Players') plt.title(title) plt.plot(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' original' + ".png") plt.show() # # log degree plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Players') plt.title(title) plt.semilogx(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' log x' + ".png") plt.show() # # log players plt.grid(True) plt.xlabel('Degree') plt.ylabel(' Log Players') plt.title(title) plt.semilogy(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' log y' + ".png") plt.show() # # log degrees and players plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Log Players') plt.title(title) plt.loglog(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' log x y' + ".png") plt.show() # # plot 4-up images for original, log x and y, log x, log y # original plt.subplot(221) plt.plot(degrees,players,'gs') plt.title('Original Plot') plt.grid(True) #log degrees plt.subplot(222) plt.semilogx(degrees,players,'gs') plt.title('Log Degrees') plt.grid(True) #log players plt.subplot(223) plt.semilogy(degrees,players,'sg') plt.title('Log Players') plt.grid(True) #log degrees and players plt.subplot(224) plt.loglog(degrees,players,'sg') plt.title('Log Degrees and Players') plt.grid(True) plt.savefig(savePath + "random_data_19_free_4_ups.png") plt.show() p.save(dist,cachePath+title+'.txt') elif (gameType == '9+free'): title = 'Degree Distribution(Border size: 9; Game Type: Free)' # # original plt.grid(True) plt.xlabel('Degree') plt.ylabel('Players') plt.title(title) plt.plot(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' original' + ".png") plt.show() # # log degree plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Players') plt.title(title) plt.semilogx(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' log x' + ".png") plt.show() # # log players plt.grid(True) plt.xlabel('Degree') plt.ylabel(' Log Players') plt.title(title) plt.semilogy(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' log y' + ".png") plt.show() # # log degrees and players plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Log Players') plt.title(title) plt.loglog(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' log x y' + ".png") plt.show() # # plot 4-up images for original, log x and y, log x, log y # original plt.subplot(221) plt.plot(degrees,players,'b^') plt.title('Original Plot') plt.grid(True) #log degrees plt.subplot(222) plt.semilogx(degrees,players,'b^') plt.title('Log Degrees') plt.grid(True) #log players plt.subplot(223) plt.semilogy(degrees,players,'b^') plt.title('Log Players') plt.grid(True) #log degrees and players plt.subplot(224) plt.loglog(degrees,players,'b^') plt.title('Log Degrees and Players') plt.grid(True) plt.savefig(savePath + "random_data_9_free_4_ups.png") plt.show() p.save(dist,cachePath+title+'.txt') elif (dataType == 'Random Data'): savePath = plotPath + '/random_data/' if (gameType == '19+ranked'): title = 'Degree Distribution(Border size: 19; Game Type: Ranked) *random ' # # original plt.grid(True) plt.xlabel('Degree') plt.ylabel('Players') plt.title(title) plt.plot(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' original' + ".png") plt.show() # # log degree plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Players') plt.title(title) plt.semilogx(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' log x' + ".png") plt.show() # # log players plt.grid(True) plt.xlabel('Degree') plt.ylabel(' Log Players') plt.title(title) plt.semilogy(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' log y' + ".png") plt.show() # # log degrees and players plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Log Players') plt.title(title) plt.loglog(degrees,players,'ro',label = plotText) plt.legend() plt.savefig(savePath + title+' log x y' + ".png") plt.show() # # plot 4-up images for original, log x and y, log x, log y # original plt.subplot(221) plt.plot(degrees,players,'ro') plt.title('Original Plot') plt.grid(True) #log degrees plt.subplot(222) plt.semilogx(degrees,players,'ro') plt.title('Log Degrees') plt.grid(True) #log players plt.subplot(223) plt.semilogy(degrees,players,'ro') plt.title('Log Players') plt.grid(True) #log degrees and players plt.subplot(224) plt.loglog(degrees,players,'ro') plt.title('Log Degrees and Players') plt.grid(True) plt.savefig(savePath + "random_data_19_ranked_4_ups.png") plt.show() p.save(dist,cachePath+title+'.txt') elif (gameType == '19+free'): title = 'Degree Distribution(Border size: 19; Game Type: Free) *random ' # # original plt.grid(True) plt.xlabel('Degree') plt.ylabel('Players') plt.title(title) plt.plot(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' original' + ".png") plt.show() # # log degree plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Players') plt.title(title) plt.semilogx(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' log x' + ".png") plt.show() # # log players plt.grid(True) plt.xlabel('Degree') plt.ylabel(' Log Players') plt.title(title) plt.semilogy(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' log y' + ".png") plt.show() # # log degrees and players plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Log Players') plt.title(title) plt.loglog(degrees,players,'gs',label = plotText) plt.legend() plt.savefig(savePath + title+' log x y' + ".png") plt.show() # # plot 4-up images for original, log x and y, log x, log y # original plt.subplot(221) plt.plot(degrees,players,'gs') plt.title('Original Plot') plt.grid(True) #log degrees plt.subplot(222) plt.semilogx(degrees,players,'gs') plt.title('Log Degrees') plt.grid(True) #log players plt.subplot(223) plt.semilogy(degrees,players,'sg') plt.title('Log Players') plt.grid(True) #log degrees and players plt.subplot(224) plt.loglog(degrees,players,'sg') plt.title('Log Degrees and Players') plt.grid(True) plt.savefig(savePath + "random_data_19_free_4_ups.png") plt.show() p.save(dist,cachePath+title+'.txt') elif (gameType == '9+free'): title = 'Degree Distribution(Border size: 9; Game Type: Free) *random ' # # original plt.grid(True) plt.xlabel('Degree') plt.ylabel('Players') plt.title(title) plt.plot(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' original' + ".png") plt.show() # # log degree plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Players') plt.title(title) plt.semilogx(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' log x' + ".png") plt.show() # # log players plt.grid(True) plt.xlabel('Degree') plt.ylabel(' Log Players') plt.title(title) plt.semilogy(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' log y' + ".png") plt.show() # # log degrees and players plt.grid(True) plt.xlabel('Log Degree') plt.ylabel('Log Players') plt.title(title) plt.loglog(degrees,players,'b^',label = plotText) plt.legend() plt.savefig(savePath + title+' log x y' + ".png") plt.show() # # plot 4-up images for original, log x and y, log x, log y # original plt.subplot(221) plt.plot(degrees,players,'b^') plt.title('Original Plot') plt.grid(True) #log degrees plt.subplot(222) plt.semilogx(degrees,players,'b^') plt.title('Log Degrees') plt.grid(True) #log players plt.subplot(223) plt.semilogy(degrees,players,'b^') plt.title('Log Players') plt.grid(True) #log degrees and players plt.subplot(224) plt.loglog(degrees,players,'b^') plt.title('Log Degrees and Players') plt.grid(True) plt.savefig(savePath + "random_data_9_free_4_ups.png") plt.show() p.save(dist,cachePath+title+'.txt')