📄 curves.py
字号:
#!/usr/bin/pythonimport Gnuplot,crng,Gnuplot.PlotItemsimport os,sysgnuplotver = 4def readfile(number): data = [] anchors = [] ref = [] guesses = [] truepos = None highest = 0.0 for x in open(number+".data").readlines(): bits = list(x.split()) type = bits[0] bits = bits[1:] if type == 'd': bits[0] = int(bits[0]) bits[1] = int(bits[1]) bits[2] = float(bits[2]) if len(data)<bits[0]+1: data.insert(bits[0],[]) data[bits[0]].insert(bits[1], bits[2]) if bits[2]>highest: highest = bits[2] elif type == 'r': limits = (float(bits[0]),float(bits[1]),float(bits[2]),float(bits[3])); elif type == 'a': #print bits bits[0] = float(bits[0])-limits[0] bits[1] = float(bits[1])-limits[1] bits[2] = float(bits[2]) #print number, bits,limits,len(data) #if bits[0]>=0 and bits[1]>=0 and bits[0]< limits[2]-limits[0] and bits[1] < limits[3]-limits[1]: #anchors.append((bits[0],bits[1],bits[2])) anchors.append([bits[0],bits[1],0,0]) ref.append([bits[0]+limits[0],bits[1]+limits[1],bits[2],float(bits[3])]) elif type == 'i': bits = [float(x) for x in bits] anchors.append([bits[0]-limits[0],bits[1]-limits[1],0,0]) anchors.append([bits[3]-limits[0],bits[4]-limits[1],0,0]) ref.append([bits[0:3],bits[3:6],bits[6]]) elif type=='t': truepos = [float(bits[0]),float(bits[1]),0,0] elif type=='g': guesses.append([float(bits[0]),float(bits[1]),0,0]) else: raise Exception, "Don't understand type '"+type+"'" return {"data":data,"highest":highest,"anchors":anchors,"truepos":truepos,"guesses":guesses,"limits":limits,"ref":ref}def expand(data,limits,xhigh, yhigh): ret = [] for x in range(xhigh): ret.append([]) for y in range(yhigh): if x>=limits[0] and x<limits[2] and y>=limits[1] and y<limits[3]: ret[-1].append(data[int(x-limits[0])][int(y-limits[1])]) else: ret[-1].append(0) #print ret return retdef plot(number): global g1 out = readfile(number) data = out["data"] g1('set term postscript enhanced monochrome') if gnuplotver>3: g1('set mouse') #g1('set term x11') g1('set ticslevel 0') #g1('set contour base') #cntrp = 'set cntrp level incr 0, '+str(out["highest"]/10.0)+',10' #g1(cntrp) #print cntrp #g1('set output "'+number+'-mesh.ps"') #print "data",number, data,len(data),len(data[0]) if gnuplotver == 3: g1('set linestyle 1 lt -1 lw 0.5') else: g1('set style line 1 lt -1 lw 0.5') limits = out["limits"] stretched = expand(data,limits,100,100) sliced = [x[::3] for x in stretched[::3]] toplot = Gnuplot.PlotItems.GridData(data,range(limits[0],limits[2]),range(limits[1],limits[3])) #toplot = Gnuplot.PlotItems.GridData(stretched,range(100),range(100)) #toplot = Gnuplot.PlotItems.GridData(sliced,range(0,100,3),range(0,100,3)) toplot.set_option(with='lines ls 1') #g1.splot(toplot) #for (x,y,conf) in anchors: # try: # data[x][y] = highest*conf # pass # except: # print number, bits,limits,len(data) # raise g1('set output "'+number+'-mesh-anchors.ps"') g1('set multiplot') g1('unset xtics') g1('unset ytics') g1('unset ztics') #g1('set label "Probability" at screen 0.04,0.4 rotate by 90') #g1('set key top right') stuff = [toplot] names = {"anchors":"Anchor","guesses":"Possible location","truepos":"True location"} for x in names.keys(): title = x if x == "truepos": x = [out[x]] else: x = out[x] print "x",x if len(x) == 0: continue for d in range(len(x)): x[d][0] += limits[0] x[d][1] += limits[1] print x pts = Gnuplot.PlotItems.Data(x,title=names[title]) pts.set_option(with='points') #stuff.append(pts) g1.splot(*stuff) g1('set nomultiplot') #raw_input() if __name__ == "__main__": g1 = Gnuplot.Gnuplot(debug=1) #g1('set term postscript landscape colour dashed defaultplex') #g1('set noxtics') #g1('set noytics') #g1('set noztics') for x in sys.argv[1:]: plot(x[:-5])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -