| # 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 |