from graphite import * def output(graph, width=450, height=300): import piddleQD global canvas try: canvas.close() except: pass canvas = piddleQD.QDCanvas( size=(width,height) ) graph.draw(canvas) canvas.flush() #---------------------------------------------------------------------- def test1(): "Copies middle school math lession horizontal bar plot" # create a graph g = Graph() g.title = "How Good are Middle School Math Lessons?" g.bottom = g.bottom + 40 g.top = g.top + 40 # Japanese percent goodness g.datasets.append( Dataset((39,3), (49,2), (9,1)) ) # German percent goodness g.datasets.append( Dataset((27,3), (38,2), (35,1)) ) # United States percent goodness g.datasets.append( Dataset((0,3), (9,2), (87,1)) ) g.axes[X].range = [0,100] g.axes[X].label = 'Percent' # doing some trickiness here g.axes[X].label.points[0] = (0,-0.1,0) # not supposed to be visible? xticks = g.axes[X].tickMarks[0] xticks.spacing = 20 xticks.labels = "%d" g.axes[Y].range = [0,4] g.axes[Y].label = '' # no Y label, default is 'Y Axis' yticks = g.axes[Y].tickMarks[0] yticks.spacing = 1 #yticks.offset = 1 # not implemented so I have to start my range at 0 yticks.labels = ['','Low quality', 'Medium quality', 'High quality'] purplebars = BarPlot() purplebars.axis = X purplebars.fillStyle = purple purplebars.size[Y] = 0.25 purplebars.shift = (0,0.25,0) redbars = BarPlot() redbars.axis = X redbars.fillStyle = red redbars.size[Y] = 0.25 redbars.shift = (0,0,0) bluebars = BarPlot() bluebars.axis = X bluebars.fillStyle = blue bluebars.size[Y] = 0.25 bluebars.shift = (0,-0.25,0) g.formats = [purplebars, redbars, bluebars] ##### the legend, doing it by hand # purple box g.overlays.append( Box((0.65,0.5,0),(0.68,.55,0),fillStyle=purple) ) g.overlays.append( Text('Japan',pos=(0.70,0.50,0), style=TextStyle(hjust=LEFT,vjust=BOTTOM,font=Font(size=10) ) ) ) # red box g.overlays.append( Box((0.65,0.4,0),(0.68,.45,0),fillStyle=red) ) g.overlays.append( Text('Germany',pos=(0.70,0.40,0), style=TextStyle(hjust=LEFT,vjust=BOTTOM,font=Font(size=10) ) ) ) # blue box g.overlays.append( Box((0.65,0.3,0),(0.68,.35,0),fillStyle=blue) ) g.overlays.append( Text('United States',pos=(0.70,0.30,0), style=TextStyle(hjust=LEFT,vjust=BOTTOM,font=Font(size=10) ) ) ) output(g) return g #---------------------------------------------------------------------- g1 = test1()