Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
class PanelGraph(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent)
		self.ancestor = parent
		self.fontpointsize=wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT).GetPointSize()
		self.colour = wx.Colour(30,70,115, alpha=wx.ALPHA_OPAQUE)
		self.canvas = PlotCanvas(self)
		if IsNotWX4():
			self.canvas.SetInitialSize(size=self.GetClientSize())
			self.canvas.SetShowScrollbars(True)
			self.canvas.SetEnableZoom(False)
			self.canvas.SetFontSizeAxis(point=12)
			self.canvas.SetFontSizeTitle(point=12)
			self.canvas.SetGridColour(wx.Colour(0, 0, 0))
			self.canvas.SetForegroundColour(wx.Colour(0, 0, 0))
			self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255))
		else:
			self.canvas.axesPen = wx.Pen(self.colour, width=1, style=wx.PENSTYLE_SOLID)
			self.canvas.SetForegroundColour(wx.Colour(0, 0, 0))
			self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255))
			self.canvas.enableGrid = (True,True)
			self.canvas.fontSizeAxis = self.fontpointsize
			self.canvas.fontSizeTitle = self.fontpointsize
		self.vbox = wx.BoxSizer(wx.VERTICAL)
		self.vbox.Add(self.canvas, 1, flag=wx.LEFT | wx.TOP | wx.GROW)
		self.paused = False
		self.hbox_btn = wx.BoxSizer(wx.HORIZONTAL)
		self.hbox_btn.AddSpacer(20)
		self.button_pause =wx.Button(self, label="Pause Graph")
		self.Bind(wx.EVT_BUTTON, self.OnClickPauseButton, self.button_pause)
		self.hbox_btn.Add(self.button_pause)
		self.button_save =wx.Button(self, label="Save Data")
		self.Bind(wx.EVT_BUTTON, self.OnClickSaveButton, self.button_save)
		self.hbox_btn.Add(self.button_save)
		self.vbox.Add(self.hbox_btn, 0, wx.EXPAND)
		self.SetSizer(self.vbox)
		self.Fit()
		self.Show()
		self.data_poll_timer = wx.Timer(self)
		self.Bind(wx.EVT_TIMER, self.UpdateGraph, self.data_poll_timer)
	def OnClickPauseButton(self, event):
		self.paused = not self.paused
		label = "Resume" if self.paused else "Pause Graph"
		if self.paused == True:
			if IsNotWX4():
				self.canvas.SetEnableZoom(True)
			else:
				self.canvas.enableZoom = True
		else:
			if IsNotWX4():
				self.canvas.SetEnableZoom(False)
			else:
				self.canvas.enableZoom = False
		self.button_pause.SetLabel(label)
	def OnClickSaveButton(self, event):
		data_length = self.ancestor.GetPage(0).citer_flow[0]
		if data_length > 0:
			self.ancestor.GetPage(0).OnClickPause(self.ancestor.GetPage(0))
			x = numpy.arange(data_length)
			y = self.ancestor.GetPage(0).residual[:data_length]
			xy = numpy.vstack((x,y)).T
			datestr = strftime("%Y-%m-%d_%H.%M.%S")
			numpy.savetxt('Residual_'+datestr+'.csv', xy, delimiter=',')
			self.ancestor.GetPage(0).OnClickPause(self.ancestor.GetPage(0))
	def UpdateGraph(self,event):
		if self.ancestor.GetPage(0).citer_flow[1] == 2:
			self.data_poll_timer.Stop()
			return
		if self.ancestor.GetPage(0).pipeline_started == True and self.paused != True:
			try:
				data_length = self.ancestor.GetPage(0).citer_flow[0]
				x = numpy.arange(data_length)
				y = self.ancestor.GetPage(0).residual[:data_length]
				data = numpy.vstack((x,y)).T
				line = PolyLine(data, colour=self.colour, width=2.5)
				graphic = PlotGraphics([line],"Error Residual", " Iteration", "Residual")
				self.canvas.Draw(graphic, xAxis=(0, data_length), yAxis=(0.0, 1.2))
			except:
				pass
Ejemplo n.º 3
0
    def build(self, panel):
        hboxMain = wx.BoxSizer(wx.HORIZONTAL)

        vboxInput = wx.BoxSizer(wx.VERTICAL)

        # horizontal box containing labels for index including date (from-to)
        hboxIndexLabel = wx.BoxSizer(wx.HORIZONTAL)
        hboxIndexLabel.Add(wx.StaticText(panel, label='Index'),
                           flag=wx.RIGHT,
                           border=81)
        hboxIndexLabel.Add(wx.StaticText(panel, label='Begin'),
                           flag=wx.RIGHT,
                           border=70)
        hboxIndexLabel.Add(wx.StaticText(panel, label='Ende'))

        vboxInput.Add(hboxIndexLabel,
                      flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP,
                      border=10)

        # horizontal box containing value-fields for index including date (from-to)
        hboxIndexValue = wx.BoxSizer(wx.HORIZONTAL)

        self.ctrl_stock_name = wx.TextCtrl(panel)
        hboxIndexValue.Add(self.ctrl_stock_name, flag=wx.RIGHT, border=8)
        self.ctrl_stock_start = wx.DatePickerCtrl(panel,
                                                  -1,
                                                  style=wx.DP_DROPDOWN
                                                  | wx.DP_SHOWCENTURY)
        hboxIndexValue.Add(self.ctrl_stock_start)
        self.ctrl_stock_end = wx.DatePickerCtrl(panel,
                                                -1,
                                                style=wx.DP_DROPDOWN
                                                | wx.DP_SHOWCENTURY)
        hboxIndexValue.Add(self.ctrl_stock_end)

        vboxInput.Add(hboxIndexValue,
                      flag=wx.EXPAND | wx.LEFT | wx.RIGHT,
                      border=10)

        # fetch button
        self.btn_update_index = wx.Button(panel, label="Fetch Index")
        vboxInput.Add(self.btn_update_index, flag=wx.ALL, border=5)
        self.btn_process = wx.Button(panel, label="Process")
        vboxInput.Add(self.btn_process, flag=wx.ALL, border=5)

        vboxInput.Add((-1, 10))  # space between index and trader

        # trader options
        vboxTraderLeft = wx.BoxSizer(wx.VERTICAL)
        self.ctrl_trader_mode = wx.ComboBox(panel,
                                            choices=TRADER_MODES,
                                            style=wx.CB_READONLY)
        vboxTraderLeft.Add(wx.StaticText(panel, label='Trader'),
                           flag=wx.ALL,
                           border=5)
        vboxTraderLeft.Add(self.ctrl_trader_mode, flag=wx.ALL, border=5)

        vboxTraderRight = wx.BoxSizer(wx.VERTICAL)

        hboxTraderToggles = wx.BoxSizer(wx.HORIZONTAL)
        self.ctrl_dynamic = wx.CheckBox(panel, label="dynamic")
        self.ctrl_reverse = wx.CheckBox(panel, label="reverse")
        self.ctrl_initial_funds = wx.lib.intctrl.IntCtrl(panel)
        hboxTraderToggles.Add(self.ctrl_dynamic, flag=wx.ALL, border=5)
        hboxTraderToggles.Add(self.ctrl_reverse, flag=wx.ALL, border=5)
        vboxTraderRight.Add(hboxTraderToggles, flag=wx.ALL, border=5)
        vboxTraderRight.Add(self.ctrl_initial_funds, flag=wx.ALL, border=5)

        vboxTraderOptions = wx.BoxSizer(wx.HORIZONTAL)
        vboxTraderOptions.Add(vboxTraderLeft)
        vboxTraderOptions.Add(vboxTraderRight)

        vboxInput.Add(vboxTraderOptions,
                      flag=wx.EXPAND | wx.LEFT | wx.RIGHT,
                      border=10)

        # horizontal box containing labels for trendindicator
        vboxInput.Add(self.indicator1,
                      flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP,
                      border=10)
        vboxInput.Add(self.indicator2,
                      flag=wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP,
                      border=10)

        # panel for plotting the graph
        vboxOutput = wx.BoxSizer(wx.VERTICAL)
        canvas = PlotCanvas(panel)
        canvas.SetEnableLegend(True)
        canvas.SetEnableDrag(True)
        canvas.SetShowScrollbars(True)
        canvas.SetEnableZoom(True)
        canvas.SetEnableAntiAliasing(True)
        self.canvas = canvas
        self.text_out = wx.StaticText(panel, label="no text")

        vboxOutput.Add(self.canvas, 3, flag=wx.EXPAND)
        vboxOutput.Add(self.text_out, 1)

        # sizer for entire frame
        hboxMain.Add(vboxInput)
        hboxMain.Add(vboxOutput, 1, flag=wx.EXPAND)

        panel.SetSizer(hboxMain)