| # Module 'Histogram' | 
 |  | 
 | from Buttons import * | 
 |  | 
 | # A Histogram displays a histogram of numeric data. | 
 | # | 
 | class HistogramAppearance(LabelAppearance, Define): | 
 | 	# | 
 | 	def define(self, parent): | 
 | 		Define.define(self, (parent, '')) | 
 | 		self.ydata = [] | 
 | 		self.scale = (0, 100) | 
 | 		return self | 
 | 	# | 
 | 	def setdata(self, ydata, scale): | 
 | 		self.ydata = ydata | 
 | 		self.scale = scale # (min, max) | 
 | 		self.parent.change(self.bounds) | 
 | 	# | 
 | 	def drawpict(self, d): | 
 | 		(left, top), (right, bottom) = self.bounds | 
 | 		min, max = self.scale | 
 | 		size = max-min | 
 | 		width, height = right-left, bottom-top | 
 | 		ydata = self.ydata | 
 | 		npoints = len(ydata) | 
 | 		v1 = top + height	# constant | 
 | 		h1 = left		# changed in loop | 
 | 		for i in range(npoints): | 
 | 			h0 = h1 | 
 | 			v0 = top + height - (ydata[i]-min)*height/size | 
 | 			h1 = left + (i+1) * width/npoints | 
 | 			d.paint((h0, v0), (h1, v1)) | 
 | 	# | 
 |  | 
 | class Histogram(NoReactivity, HistogramAppearance): pass |