⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curves.py

📁 用于OMNeT++的模板
💻 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 + -