示例#1
0
class slicePanel(wx.Panel):
    '''
    This is the 1D plot panel which displays the slices which the user selects
    '''
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, style=wx.BORDER_SUNKEN)

        self.sliceFigure = Figure(frameon=True, figsize=(2, 3))
        self.sliceFigure.set_facecolor('.82')
        self.sliceCanvas = FigureCanvas(self, -1, self.sliceFigure)
        self.sliceCanvas.SetAutoLayout(False)

        self.box = Toolbar(self.sliceCanvas)
        self.box.Hide()
        self.box.zoom()

        self.fm = FigureManagerBase(self.sliceCanvas, 1)
        _pylab_helpers.Gcf.set_active(self.fm)

        self.sliceAxis = self.sliceFigure.add_axes([0.1, 0.2, 0.8, 0.7])

        sliceSizer = wx.BoxSizer(wx.VERTICAL)
        sliceSizer.Add(self.sliceCanvas,
                       1,
                       wx.EXPAND | wx.RIGHT | wx.LEFT,
                       border=1)
        self.SetSizer(sliceSizer)
        return

    def updatePlot(self, data, xaxis, legLab, xlabel, ylabel, title, scale,
                   legTog):
        '''
        The user can select a new slice at any time to plot on the 1D panel.
        This method refreshes the plot so that the new data is displayed.
        '''
        self.sliceAxis.cla()

        self.linePlot = self.sliceAxis.plot(xaxis, (array(data).T))
        xlim((min(xaxis), max(xaxis)))

        self.sliceAxis.leg = legend(legLab)

        self.sliceAxis.leg.set_visible(legTog)

        self.sliceAxis.set_xlabel(xlabel)
        self.sliceAxis.set_ylabel(ylabel)
        self.sliceAxis.set_title(title)

        self.sliceAxis.set_yscale(str(scale))

        draw()

        return