82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/env python
 | |
| __author__ = 'dongyun.zdy'
 | |
| 
 | |
| 
 | |
| import sys
 | |
| import numpy as np
 | |
| import matplotlib as mpl
 | |
| from matplotlib import cm
 | |
| import matplotlib.pyplot as plt
 | |
| from mpl_toolkits.mplot3d import Axes3D
 | |
| import math
 | |
| import getopt
 | |
| 
 | |
| def extract_int_info_from_line(line):
 | |
|     splited = line.split(",")
 | |
|     line_info = []
 | |
|     for item in splited:
 | |
|         line_info.append(int(float(item)))
 | |
|     return line_info
 | |
| 
 | |
| def case_cmp(a,b,c):
 | |
|     if a[c] < b[c] :
 | |
|         return -1
 | |
|     elif a[c] > b[c] :
 | |
|         return 1
 | |
|     else :
 | |
|         return 0
 | |
| 
 | |
| cmp_n = [lambda x, y, z = count: case_cmp(x, y, z) for count in range(10)]
 | |
| #cmp_n = [lambda x, y: cmp(x[count], y[count]) for count in range(10)]
 | |
| 
 | |
| colors = ["red", "green", "blue", "yellow", "purple", "black", "pink" , "brown", "cyan" ,"orange"]
 | |
| 
 | |
| def do_plot(file_cases):
 | |
|     fig = plt.figure()
 | |
|     fig.set_size_inches((20,10))
 | |
|     ax1 = fig.add_subplot(111)
 | |
|     for i in xrange(len(file_cases)):
 | |
|         ax1.plot(file_cases[i][0], file_cases[i][1], color=colors[i])
 | |
|     plt.show()
 | |
| 
 | |
| if __name__ == '__main__':
 | |
| 
 | |
|     file_names = []
 | |
|     horizen = 0
 | |
|     demension = 0
 | |
|     wrong_arg = False
 | |
|     opts,args = getopt.getopt(sys.argv[1:],"f:h:d:")
 | |
| 
 | |
|     for op, value in opts:
 | |
|         if "-f" == op:
 | |
|             file_names.append(value)
 | |
|         elif "-h" == op:
 | |
|             horizen = int(value)
 | |
|         elif "-d" == op:
 | |
|             demension = int(value)
 | |
|         else:
 | |
|             wrong_arg = True
 | |
| 
 | |
|     if horizen == demension or len(file_names) == 0 or wrong_arg:
 | |
|         print "wrong arg"
 | |
|         sys.exit()
 | |
| 
 | |
|     file_cases = []
 | |
|     for name in file_names:
 | |
|         file = open(name)
 | |
|         horizens = []
 | |
|         demensions = []
 | |
|         cases = []
 | |
|         for line in file:
 | |
|             if line[0] == '[' or line.startswith('#'):
 | |
|                 continue
 | |
|             case_param = extract_int_info_from_line(line)
 | |
|             cases.append(case_param)
 | |
|         cases.sort(cmp_n[horizen])
 | |
|         for case in cases:
 | |
|             horizens.append(case[horizen])
 | |
|             demensions.append(case[demension])
 | |
|         file_cases.append([np.array(horizens), np.array(demensions)])
 | |
| 
 | |
|     do_plot(file_cases)
 | 
