graph.py

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 63 行

PY
63
字号
from java import awtfrom math import *from jarray import arrayclass Graph(awt.Canvas):	def __init__(self):		self.function = None	def paint(self, g):		if self.function is None:			return self.error(g)					sz = self.size		xs = range(0, sz.width, 2)				xscale = 4*pi/sz.width		xoffset = -2*pi				yscale = -sz.height/2.		yoffset = sz.height/2.				ys = []		for x in xs:			x = xscale*x + xoffset			y = int(yscale*self.function(x)+yoffset)			ys.append(y)		g.drawPolyline(array(xs, 'i'), array(ys, 'i'), len(xs))	def error(self, g):		message = "Invalid Expression"		g.font = awt.Font('Serif', awt.Font.BOLD, 20)		width = g.fontMetrics.stringWidth(message)				x = (self.size.width-width)/2		y = (self.size.height+g.fontMetrics.height)/2		g.drawString("Invalid Expression", x, y)		def setExpression(self, e):		try:			self.function = eval('lambda x: '+e)		except:			self.function = None		self.repaint()	if __name__ == '__main__':	def enter(e):		graph.setExpression(expression.text)		expression.caretPosition=0		expression.selectAll()			p = awt.Panel(layout=awt.BorderLayout())	graph = Graph()	p.add(graph, 'Center')		expression = awt.TextField(text='(sin(3*x)+cos(x))/2', actionPerformed=enter)	p.add(expression, 'South')		import pawt		pawt.test(p, size=(300,300))		enter(None)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?