Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 1 | # Module 'Histogram' |
| 2 | |
| 3 | from Buttons import * |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 4 | |
| 5 | # A Histogram displays a histogram of numeric data. |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 6 | # |
Guido van Rossum | 0c89ec7 | 1990-11-05 19:44:31 +0000 | [diff] [blame] | 7 | class HistogramAppearance() = LabelAppearance(), Define(): |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 8 | # |
Guido van Rossum | 0c89ec7 | 1990-11-05 19:44:31 +0000 | [diff] [blame] | 9 | def define(self, parent): |
| 10 | Define.define(self, (parent, '')) |
| 11 | self.ydata = [] |
| 12 | self.scale = (0, 100) |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 13 | return self |
| 14 | # |
| 15 | def setdata(self, (ydata, scale)): |
| 16 | self.ydata = ydata |
| 17 | self.scale = scale # (min, max) |
Guido van Rossum | 0c89ec7 | 1990-11-05 19:44:31 +0000 | [diff] [blame] | 18 | self.parent.change(self.bounds) |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 19 | # |
Guido van Rossum | 0c89ec7 | 1990-11-05 19:44:31 +0000 | [diff] [blame] | 20 | def drawpict(self, d): |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 21 | (left, top), (right, bottom) = self.bounds |
| 22 | min, max = self.scale |
| 23 | size = max-min |
| 24 | width, height = right-left, bottom-top |
Guido van Rossum | 0c89ec7 | 1990-11-05 19:44:31 +0000 | [diff] [blame] | 25 | ydata = self.ydata |
| 26 | npoints = len(ydata) |
| 27 | v1 = top + height # constant |
| 28 | h1 = left # changed in loop |
| 29 | for i in range(npoints): |
| 30 | h0 = h1 |
| 31 | v0 = top + height - (ydata[i]-min)*height/size |
| 32 | h1 = left + (i+1) * width/npoints |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 33 | d.paint((h0, v0), (h1, v1)) |
| 34 | # |
Guido van Rossum | e1f069e | 1990-10-25 18:51:42 +0000 | [diff] [blame] | 35 | |
Guido van Rossum | 0c89ec7 | 1990-11-05 19:44:31 +0000 | [diff] [blame] | 36 | class Histogram() = NoReactivity(), HistogramAppearance(): pass |