class scatter_plot(Qwt.QwtPlot):
    """ QT widget which plots the scattering function. """

    def __init__(self, grblock, *args):
        Qwt.QwtPlot.__init__(self, *args)
        self.grblock = grblock
        self.scatter = np.zeros( (self.grblock.nt, self.grblock.ntau) )

        # set plot title
        self.setTitle('Scattering Function')

        # set plot layout
        self.plotLayout().setMargin(0)
        self.plotLayout().setCanvasMargin(0)
        self.plotLayout().setAlignCanvasToScales(True)

        # set legend
        legend = Qwt.QwtLegend()
        legend.setItemMode(Qwt.QwtLegend.ClickableItem)
        self.insertLegend(legend, Qwt.QwtPlot.RightLegend)

        # set axis titles
        self.setAxisTitle(Qwt.QwtPlot.xBottom, 'Delay (s)')
        self.setAxisTitle(Qwt.QwtPlot.yLeft, 'Doppler Spectrum (Hz)')

        # scale x-axis
        t_scale = time_scale(self.grblock.t_symbol)
        self.setAxisScaleDraw( Qwt.QwtPlot.xBottom, t_scale )

        # scale y-axis
        f_scale = freq_scale( self.grblock.prf, self.grblock.nt)
        self.setAxisScaleDraw( Qwt.QwtPlot.yLeft, f_scale )

        # create a QwtRasterData instance to store the numpy array
        # produced by the GNU Radio Python sink block
        self.scatter_data = ScatterData(self.scatter)

        # create a QwtPlotSpectrogram instance to plot the QwtRasterData
        self.plot_scatter = Qwt.QwtPlotSpectrogram()

        # create a greyscale colormap
        colorMap = Qwt.QwtLinearColorMap(Qt.Qt.black, Qt.Qt.white)
        self.plot_scatter.setColorMap(colorMap)

        # attach and pass the data
        self.plot_scatter.attach(self)
        self.plot_scatter.setData(self.scatter_data)

        # replot
        self.replot()

        # zoomer
        self.zoomer = Qwt.QwtPlotZoomer(Qwt.QwtPlot.xBottom,
                                        Qwt.QwtPlot.yLeft,
                                        Qwt.QwtPicker.DragSelection,
                                        Qwt.QwtPicker.AlwaysOff,
                                        self.canvas())
        self.zoomer.setRubberBandPen(Qt.QPen(Qt.Qt.green))

        # picker showing the coordinates at the mouse pointer
        self.picker = QwtPlotPicker(self.grblock.t_symbol,
                                          self.grblock.nt,
                                          self.grblock.prf,
                                          Qwt.QwtPlot.xBottom,
                                          Qwt.QwtPlot.yLeft,
                                          Qwt.QwtPicker.PointSelection,
                                          Qwt.QwtPlotPicker.CrossRubberBand,
                                          Qwt.QwtPicker.AlwaysOn,
                                          self.canvas())
        self.picker.setTrackerPen(Qt.QPen(Qt.Qt.cyan))

    def update_data(self):
        self.data = self.grblock.data
        scatter = np.fft.fft(self.data, axis = 0)
        scatter = np.fft.fftshift(scatter, axes = 0)
        scatter = np.abs(scatter)
        scatter = np.divide(scatter, scatter.max())
        # np.log10 cannot work with 0,
        # therefore we have to separately treat our data
        #idxg = np.where(scatter != 0)
        #idxb = np.where(scatter == 0)
        #scatter[idxg] = 20*np.log10(scatter[idxg])
        #scatter[idxb] = scatter[idxg].min()
        self.scatter_data.setData(scatter)
        self.replot()
Beispiel #2
0
class scatter_plot(Qwt.QwtPlot):
    """ QT widget which plots the scattering function. """
    def __init__(self, grblock, *args):
        Qwt.QwtPlot.__init__(self, *args)
        self.grblock = grblock
        self.scatter = np.zeros((self.grblock.nt, self.grblock.ntau))

        # set plot title
        self.setTitle('Scattering Function')

        # set plot layout
        self.plotLayout().setMargin(0)
        self.plotLayout().setCanvasMargin(0)
        self.plotLayout().setAlignCanvasToScales(True)

        # set legend
        legend = Qwt.QwtLegend()
        legend.setItemMode(Qwt.QwtLegend.ClickableItem)
        self.insertLegend(legend, Qwt.QwtPlot.RightLegend)

        # set axis titles
        self.setAxisTitle(Qwt.QwtPlot.xBottom, 'Delay (s)')
        self.setAxisTitle(Qwt.QwtPlot.yLeft, 'Doppler Spectrum (Hz)')

        # scale x-axis
        t_scale = time_scale(self.grblock.t_symbol)
        self.setAxisScaleDraw(Qwt.QwtPlot.xBottom, t_scale)

        # scale y-axis
        f_scale = freq_scale(self.grblock.prf, self.grblock.nt)
        self.setAxisScaleDraw(Qwt.QwtPlot.yLeft, f_scale)

        # create a QwtRasterData instance to store the numpy array
        # produced by the GNU Radio Python sink block
        self.scatter_data = ScatterData(self.scatter)

        # create a QwtPlotSpectrogram instance to plot the QwtRasterData
        self.plot_scatter = Qwt.QwtPlotSpectrogram()

        # create a greyscale colormap
        colorMap = Qwt.QwtLinearColorMap(Qt.Qt.black, Qt.Qt.white)
        self.plot_scatter.setColorMap(colorMap)

        # attach and pass the data
        self.plot_scatter.attach(self)
        self.plot_scatter.setData(self.scatter_data)

        # replot
        self.replot()

        # zoomer
        self.zoomer = Qwt.QwtPlotZoomer(Qwt.QwtPlot.xBottom, Qwt.QwtPlot.yLeft,
                                        Qwt.QwtPicker.DragSelection,
                                        Qwt.QwtPicker.AlwaysOff, self.canvas())
        self.zoomer.setRubberBandPen(Qt.QPen(Qt.Qt.green))

        # picker showing the coordinates at the mouse pointer
        self.picker = QwtPlotPicker(self.grblock.t_symbol, self.grblock.nt,
                                    self.grblock.prf, Qwt.QwtPlot.xBottom,
                                    Qwt.QwtPlot.yLeft,
                                    Qwt.QwtPicker.PointSelection,
                                    Qwt.QwtPlotPicker.CrossRubberBand,
                                    Qwt.QwtPicker.AlwaysOn, self.canvas())
        self.picker.setTrackerPen(Qt.QPen(Qt.Qt.cyan))

    def update_data(self):
        self.data = self.grblock.data
        scatter = np.fft.fft(self.data, axis=0)
        scatter = np.fft.fftshift(scatter, axes=0)
        scatter = np.abs(scatter)
        scatter = np.divide(scatter, scatter.max())
        # np.log10 cannot work with 0,
        # therefore we have to separately treat our data
        #idxg = np.where(scatter != 0)
        #idxb = np.where(scatter == 0)
        #scatter[idxg] = 20*np.log10(scatter[idxg])
        #scatter[idxb] = scatter[idxg].min()
        self.scatter_data.setData(scatter)
        self.replot()
    def __init__(self, grblock, *args):
        Qwt.QwtPlot.__init__(self, *args)
        self.grblock = grblock
        self.scatter = np.zeros( (self.grblock.nt, self.grblock.ntau) )

        # set plot title
        self.setTitle('Scattering Function')

        # set plot layout
        self.plotLayout().setMargin(0)
        self.plotLayout().setCanvasMargin(0)
        self.plotLayout().setAlignCanvasToScales(True)

        # set legend
        legend = Qwt.QwtLegend()
        legend.setItemMode(Qwt.QwtLegend.ClickableItem)
        self.insertLegend(legend, Qwt.QwtPlot.RightLegend)

        # set axis titles
        self.setAxisTitle(Qwt.QwtPlot.xBottom, 'Delay (s)')
        self.setAxisTitle(Qwt.QwtPlot.yLeft, 'Doppler Spectrum (Hz)')

        # scale x-axis
        t_scale = time_scale(self.grblock.t_symbol)
        self.setAxisScaleDraw( Qwt.QwtPlot.xBottom, t_scale )

        # scale y-axis
        f_scale = freq_scale( self.grblock.prf, self.grblock.nt)
        self.setAxisScaleDraw( Qwt.QwtPlot.yLeft, f_scale )

        # create a QwtRasterData instance to store the numpy array
        # produced by the GNU Radio Python sink block
        self.scatter_data = ScatterData(self.scatter)

        # create a QwtPlotSpectrogram instance to plot the QwtRasterData
        self.plot_scatter = Qwt.QwtPlotSpectrogram()

        # create a greyscale colormap
        colorMap = Qwt.QwtLinearColorMap(Qt.Qt.black, Qt.Qt.white)
        self.plot_scatter.setColorMap(colorMap)

        # attach and pass the data
        self.plot_scatter.attach(self)
        self.plot_scatter.setData(self.scatter_data)

        # replot
        self.replot()

        # zoomer
        self.zoomer = Qwt.QwtPlotZoomer(Qwt.QwtPlot.xBottom,
                                        Qwt.QwtPlot.yLeft,
                                        Qwt.QwtPicker.DragSelection,
                                        Qwt.QwtPicker.AlwaysOff,
                                        self.canvas())
        self.zoomer.setRubberBandPen(Qt.QPen(Qt.Qt.green))

        # picker showing the coordinates at the mouse pointer
        self.picker = QwtPlotPicker(self.grblock.t_symbol,
                                          self.grblock.nt,
                                          self.grblock.prf,
                                          Qwt.QwtPlot.xBottom,
                                          Qwt.QwtPlot.yLeft,
                                          Qwt.QwtPicker.PointSelection,
                                          Qwt.QwtPlotPicker.CrossRubberBand,
                                          Qwt.QwtPicker.AlwaysOn,
                                          self.canvas())
        self.picker.setTrackerPen(Qt.QPen(Qt.Qt.cyan))
Beispiel #4
0
    def __init__(self, grblock, *args):
        Qwt.QwtPlot.__init__(self, *args)
        self.grblock = grblock
        self.scatter = np.zeros((self.grblock.nt, self.grblock.ntau))

        # set plot title
        self.setTitle('Scattering Function')

        # set plot layout
        self.plotLayout().setMargin(0)
        self.plotLayout().setCanvasMargin(0)
        self.plotLayout().setAlignCanvasToScales(True)

        # set legend
        legend = Qwt.QwtLegend()
        legend.setItemMode(Qwt.QwtLegend.ClickableItem)
        self.insertLegend(legend, Qwt.QwtPlot.RightLegend)

        # set axis titles
        self.setAxisTitle(Qwt.QwtPlot.xBottom, 'Delay (s)')
        self.setAxisTitle(Qwt.QwtPlot.yLeft, 'Doppler Spectrum (Hz)')

        # scale x-axis
        t_scale = time_scale(self.grblock.t_symbol)
        self.setAxisScaleDraw(Qwt.QwtPlot.xBottom, t_scale)

        # scale y-axis
        f_scale = freq_scale(self.grblock.prf, self.grblock.nt)
        self.setAxisScaleDraw(Qwt.QwtPlot.yLeft, f_scale)

        # create a QwtRasterData instance to store the numpy array
        # produced by the GNU Radio Python sink block
        self.scatter_data = ScatterData(self.scatter)

        # create a QwtPlotSpectrogram instance to plot the QwtRasterData
        self.plot_scatter = Qwt.QwtPlotSpectrogram()

        # create a greyscale colormap
        colorMap = Qwt.QwtLinearColorMap(Qt.Qt.black, Qt.Qt.white)
        self.plot_scatter.setColorMap(colorMap)

        # attach and pass the data
        self.plot_scatter.attach(self)
        self.plot_scatter.setData(self.scatter_data)

        # replot
        self.replot()

        # zoomer
        self.zoomer = Qwt.QwtPlotZoomer(Qwt.QwtPlot.xBottom, Qwt.QwtPlot.yLeft,
                                        Qwt.QwtPicker.DragSelection,
                                        Qwt.QwtPicker.AlwaysOff, self.canvas())
        self.zoomer.setRubberBandPen(Qt.QPen(Qt.Qt.green))

        # picker showing the coordinates at the mouse pointer
        self.picker = QwtPlotPicker(self.grblock.t_symbol, self.grblock.nt,
                                    self.grblock.prf, Qwt.QwtPlot.xBottom,
                                    Qwt.QwtPlot.yLeft,
                                    Qwt.QwtPicker.PointSelection,
                                    Qwt.QwtPlotPicker.CrossRubberBand,
                                    Qwt.QwtPicker.AlwaysOn, self.canvas())
        self.picker.setTrackerPen(Qt.QPen(Qt.Qt.cyan))