class plot(wx.Frame): #---------------------------------------------------------------------- def __init__(self, grafica): wx.Frame.__init__(self, None, wx.ID_ANY, 'Grafica de resultados') panel = wx.Panel(self, wx.ID_ANY) mainSizer = wx.BoxSizer(wx.VERTICAL) checkSizer = wx.BoxSizer(wx.HORIZONTAL) self.canvas = PlotCanvas(panel) self.canvas.SetShowScrollbars(True) self.canvas.SetEnableZoom(True) self.canvas.Draw(grafica) toggleGrid = wx.CheckBox(panel, label="Ver cuadricula") toggleGrid.Bind(wx.EVT_CHECKBOX, self.onToggleGrid) toggleLegend = wx.CheckBox(panel, label="Ver leyenda") toggleLegend.Bind(wx.EVT_CHECKBOX, self.onToggleLegend) mainSizer.Add(self.canvas, 1, wx.EXPAND) checkSizer.Add(toggleGrid, 0, wx.ALL, 5) checkSizer.Add(toggleLegend, 0, wx.ALL, 5) mainSizer.Add(checkSizer) panel.SetSizer(mainSizer) def onToggleGrid(self, event): self.canvas.Reset() self.canvas.SetEnableGrid(event.IsChecked()) def onToggleLegend(self, event): self.canvas.SetEnableLegend(event.IsChecked()) def dibujar(self): app = wx.App(False) self.Show() app.MainLoop()
class MyGraph(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY, 'It Looks Like a Line Graph!') # Add a panel so it looks the correct on all platforms panel = wx.Panel(self, wx.ID_ANY) # create some sizers mainSizer = wx.BoxSizer(wx.VERTICAL) checkSizer = wx.BoxSizer(wx.HORIZONTAL) # create the widgets self.canvas = PlotCanvas(panel) self.canvas.Draw(drawLinePlot()) toggleGrid = wx.CheckBox(panel, label="Show Grid") toggleGrid.Bind(wx.EVT_CHECKBOX, self.onToggleGrid) toggleLegend = wx.CheckBox(panel, label="Show Legend") toggleLegend.Bind(wx.EVT_CHECKBOX, self.onToggleLegend) # layout the widgets mainSizer.Add(self.canvas, 1, wx.EXPAND) checkSizer.Add(toggleGrid, 0, wx.ALL, 5) checkSizer.Add(toggleLegend, 0, wx.ALL, 5) mainSizer.Add(checkSizer) panel.SetSizer(mainSizer) def onToggleGrid(self, event): """""" self.canvas.SetEnableGrid(event.IsChecked()) def onToggleLegend(self, event): """""" self.canvas.SetEnableLegend(event.IsChecked())
class piramida_penduduk(wx.Frame): def _init_ctrls(self, prnt): # generated method, don't edit wx.Frame.__init__(self, id=wxID_PIRAMIDA_PENDUDUK, name=u'piramida_penduduk', parent=prnt, pos=wx.Point(341, 167), size=wx.Size(911, 445), style=wx.DEFAULT_FRAME_STYLE, title=u'Perbandingan Penduduk') self.SetClientSize(wx.Size(911, 445)) def __init__(self, parent): self._init_ctrls(parent) self.drawBarGraph() def drawBarGraph(): self.canvas = PlotCanvas(panel) self.canvas.Draw(drawBarGraph()) toggleGrid = wx.CheckBox(panel, label="Show Grid") toggleGrid.Bind(wx.EVT_CHECKBOX, self.onToggleGrid) toggleLegend = wx.CheckBox(panel, label="Show Legend") toggleLegend.Bind(wx.EVT_CHECKBOX, self.onToggleLegend) points1 = [(1, 0), (1, 10)] line1 = PolyLine(points1, colour='green', legend='Feb.', width=10) points1g = [(2, 0), (2, 4)] line1g = PolyLine(points1g, colour='red', legend='Mar.', width=10) points1b = [(3, 0), (3, 100)] line1b = PolyLine(points1b, colour='blue', legend='Apr.', width=10) points2 = [(4, 0), (4, 12)] line2 = PolyLine(points2, colour='Yellow', legend='May', width=10) points2g = [(5, 0), (5, 8)] line2g = PolyLine(points2g, colour='orange', legend='June', width=10) points2b = [(6, 0), (6, 4)] line2b = PolyLine(points2b, colour='brown', legend='July', width=10) return PlotGraphics([line1, line1g, line1b, line2, line2g, line2b], "Bar Graph - (Turn on Grid, Legend)", "Months", "Number of Students") def onToggleGrid(self, event): """""" self.canvas.SetEnableGrid(event.IsChecked()) #---------------------------------------------------------------------- def onToggleLegend(self, event): """""" self.canvas.SetEnableLegend(event.IsChecked())
class Plot(wx.Frame): def __init__(self, parent, regname): wx.Frame.__init__(self, parent, wx.ID_ANY, regname, size=(400, 300)) # Attributes self.__panel = wx.Panel(self, wx.ID_ANY) self.__id = regname self.__data = [] self.__first_time_point = -1 # Layout attributes self.__toggle_grid = wx.CheckBox(self.__panel, label="Show Grid") self.__main_sizer = None self.__check_sizer = None self.__canvas = None # Layout self.__do_layout() # Handlers self.Bind(wx.EVT_CHECKBOX, self.__on_toggle_grid, self.__toggle_grid) def __do_layout(self): self.__panel.SetBackgroundColour("Gray") self.__main_sizer = wx.BoxSizer(wx.VERTICAL) self.__check_sizer = wx.BoxSizer(wx.HORIZONTAL) self.__canvas = PlotCanvas(self.__panel) self.__check_sizer.Add(self.__toggle_grid, 0, wx.ALL, 5) self.__main_sizer.Add(self.__canvas, 1, wx.EXPAND) self.__main_sizer.Add(self.__check_sizer) self.__panel.SetSizer(self.__main_sizer) self.__panel.SetAutoLayout(True) self.plot() def add_pair(self, y): x = int(time.time()) if not self.__data: self.__first_time_point = x # Restrict number of maximum plotted points to 100 if len(self.__data) >= 100: new_data = self.__data[2:] self.__data = new_data time_elapsed = x - self.__first_time_point if self.__data: previous_y = self.__data[-1][1] print "previous y is %s" % previous_y self.__data.append((time_elapsed, previous_y)) self.__data.append((time_elapsed, y)) def plot(self): print "DEBUG: plotting with data", str(self.__data) self.__canvas.Draw(self.__draw_reg_plot()) def __draw_reg_plot(self): plot_title = "REGISTER %s" % self.__id if not self.__data: plot_title = "NO DATA YET" x_axis_title = "Time (seconds since first sample)" y_axis_title = self.__id line1 = PolyLine(self.__data, colour='blue', width=3) return PlotGraphics([line1], plot_title, x_axis_title, y_axis_title) def __on_toggle_grid(self, event): self.__canvas.SetEnableGrid(event.IsChecked())