Ejemplo n.º 1
0
    def on_xlim_change(self, ax):
        xmin, xmax = ax.get_xlim()
        if (self.xleft, self.xright) != (xmin, xmax):
            self.xleft, self.xright = xmin, xmax
            if self.xmin <= xmin <= xmax <= self.xmax:
                # Update minimap selector
                if (xmin, xmax) != self.minimap.get_selector_limits():
                    self.minimap.set_selector_limits(xmin, xmax)

                # Update axes
                for axes in self.fig.axes:
                    if ax != axes:
                        axes.set_xlim(xmin, xmax)

                # Update data
                xmin = int(max(0, xmin) * self.fs)
                xmax = int(min(self.xmax, xmax) * self.fs)

                pixel_width = np.ceil(self.fig.get_figwidth() *
                                      self.fig.get_dpi())

                if self._signal_data is not None:
                    x_data, y_data = plotting.reduce_data(
                        self.time, self.signal, pixel_width, xmin, xmax)
                    self._signal_data.set_xdata(x_data)
                    self._signal_data.set_ydata(y_data)

                if self._envelope_data is not None:
                    x_data, y_data = plotting.reduce_data(
                        self.time, self.envelope, pixel_width, xmin, xmax)
                    self._envelope_data.set_xdata(x_data)
                    self._envelope_data.set_ydata(y_data)

                if self._cf_data is not None and self.cf_ax.get_visible():
                    x_data, y_data = plotting.reduce_data(
                        self.time[:len(self.cf)], self.cf, pixel_width, xmin,
                        xmax)
                    self._cf_data.set_xdata(x_data)
                    self._cf_data.set_ydata(y_data)
                # Draw graph
                self.draw()

            else:
                xmin = max(self.xmin, xmin)
                xmax = min(self.xmax, xmax)
                ax.set_xlim(xmin, xmax)
Ejemplo n.º 2
0
 def update_data(self, ax=None):
     ax = self.ax if ax is None else ax
     xmin, xmax = self.ax.get_xlim()
     xmin = int(max(0, self.xmin) * self.trace.fs)
     xmax = int(min(self.xmax, xmax) * self.trace.fs)
     pixel_width = np.ceil(self.fig.get_figwidth() * self.fig.get_dpi())
     x_data, y_data = plotting.reduce_data(self.time, self.trace.signal,
                                           pixel_width, xmin, xmax)
     self._plot_data.set_xdata(x_data)
     self._plot_data.set_ydata(y_data)
     self.parent.draw()
Ejemplo n.º 3
0
    def set_record(self, record, step):
        self.record = record
        self.step = step
        self.xrange = np.linspace(0,
                                  len(self.record.signal) / self.record.fs,
                                  num=len(self.record.signal),
                                  endpoint=False)
        self.xmin = self.xrange[0]
        self.xmax = self.xrange[-1]
        self.markers = {}

        ax = self.minimapFig.axes[0]
        ax.lines = []
        formatter = FuncFormatter(
            lambda x, pos: str(datetime.timedelta(seconds=x)))
        ax.xaxis.set_major_formatter(formatter)
        ax.grid(True, which='both')
        # Set dataseries to plot
        xmin = self.xmin * self.record.fs
        xmax = self.xmax * self.record.fs
        pixel_width = np.ceil(self.minimapFig.get_figwidth() *
                              self.minimapFig.get_dpi())
        x_data, y_data = plotting.reduce_data(self.xrange, self.record.signal,
                                              pixel_width, xmin, xmax)
        # self._plot_data.set_xdata(x_data)
        # self._plot_data.set_ydata(y_data)
        ax.plot(x_data, y_data, color='black', rasterized=True)
        ax.set_xlim(self.xmin, self.xmax)
        plotting.adjust_axes_height(ax)
        # Set the playback marker
        self.playback_marker = PlayBackMarker(self.minimapFig, self)
        self.playback_marker.markers[0].set_animated(True)
        # Draw canvas
        self.minimapCanvas.draw()
        self.minimapBackground = self.minimapCanvas.copy_from_bbox(
            self.minimapFig.bbox)
        self.draw_animate()
Ejemplo n.º 4
0
 def test_too_much_width_returns_input_data(self):
     xres, yres = plotting.reduce_data(self.xdata, self.ydata, 15)
     self.assertTrue(np.all(self.xdata == xres))
     self.assertTrue(np.all(self.ydata == yres))
Ejemplo n.º 5
0
 def test_reduce_data_returns_correct_results(self):
     xres, yres = plotting.reduce_data(self.xdata, self.ydata, self.width,
                                       self.xmin, self.xmax)
     self.assertTrue(np.all(self.xreduced == xres))
     self.assertTrue(np.all(self.yreduced == yres))