def __init__(self, parent=None): Qwt.QwtPlot.__init__(self, parent ) self.grid=None self.setTitle( "Watching TV during a weekend" ) canvas = Qwt.QwtPlotCanvas() canvas.setPalette( QPalette(Qt.gray) ) canvas.setBorderRadius( 10 ) self.setCanvas( canvas ) self.plotLayout().setAlignCanvasToScales( True ) self.setAxisTitle( Qwt.QwtPlot.yLeft, "Number of People" ) self.setAxisTitle( Qwt.QwtPlot.xBottom, "Number of Hours" ) self.legend = Qwt.QwtLegend() self.legend.setDefaultItemMode( Qwt.QwtLegendData.Checkable ) self.insertLegend( self.legend, Qwt.QwtPlot.RightLegend ) self.populate() self.legend.checked['QVariant','bool','int'].connect(self.showItem ) self.replot() # creating the legend items """self.items = Qwt.QwtPlotDict.itemList( Qwt.QwtPlotItem.Rtti_PlotHistogram ) for i in range(len(self.items)): if ( i == 0 ): #const QVariant itemInfo = itemToInfo( self.items[i] ) #QwtLegendLabel * legendLabel = legend.legendWidget( itemInfo ) if ( legendLabel ): legendLabel.setChecked( True ) self.items[i].setVisible( True ) else: self.items[i].setVisible( False )""" self.setAutoReplot( True )
def __init__(self, parent=None): Qwt.QwtPlot.__init__(self, parent) self.setAutoReplot(False) self.setTitle("Frequency Response of a Second-Order System") canvas = Qwt.QwtPlotCanvas() canvas.setBorderRadius(10) self.setCanvas(canvas) self.setCanvasBackground(QColor("MidnightBlue")) # legend legend = Qwt.QwtLegend() self.insertLegend(legend, Qwt.QwtPlot.BottomLegend) # grid grid = Qwt.QwtPlotGrid() grid.enableXMin(True) grid.setMajorPen(Qt.white, 0, Qt.DotLine) grid.setMinorPen(Qt.gray, 0, Qt.DotLine) grid.attach(self) # axes self.enableAxis(Qwt.QwtPlot.yRight) self.setAxisTitle(Qwt.QwtPlot.xBottom, "Normalized Frequency") self.setAxisTitle(Qwt.QwtPlot.yLeft, "Amplitude [dB]") self.setAxisTitle(Qwt.QwtPlot.yRight, "Phase [deg]") self.setAxisMaxMajor(Qwt.QwtPlot.xBottom, 6) self.setAxisMaxMinor(Qwt.QwtPlot.xBottom, 9) self.setAxisScaleEngine(Qwt.QwtPlot.xBottom, Qwt.QwtLogScaleEngine()) # curves self.d_curve1 = Qwt.QwtPlotCurve("Amplitude") self.d_curve1.setRenderHint(Qwt.QwtPlotItem.RenderAntialiased) self.d_curve1.setPen(Qt.yellow) self.d_curve1.setLegendAttribute(Qwt.QwtPlotCurve.LegendShowLine) self.d_curve1.setYAxis(Qwt.QwtPlot.yLeft) self.d_curve1.attach(self) self.d_curve2 = Qwt.QwtPlotCurve("Phase") self.d_curve2.setRenderHint(Qwt.QwtPlotItem.RenderAntialiased) self.d_curve2.setPen(Qt.cyan) self.d_curve2.setLegendAttribute(Qwt.QwtPlotCurve.LegendShowLine) self.d_curve2.setYAxis(Qwt.QwtPlot.yRight) self.d_curve2.attach(self) # marker self.d_marker1 = Qwt.QwtPlotMarker() self.d_marker1.setValue(0.0, 0.0) self.d_marker1.setLineStyle(Qwt.QwtPlotMarker.VLine) self.d_marker1.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) self.d_marker1.setLinePen(Qt.green, 0, Qt.DashDotLine) self.d_marker1.attach(self) self.d_marker2 = Qwt.QwtPlotMarker() self.d_marker2.setLineStyle(Qwt.QwtPlotMarker.HLine) self.d_marker2.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) self.d_marker2.setLinePen(QColor(200, 150, 0), 0, Qt.DashDotLine) self.d_marker2.setSymbol( Qwt.QwtSymbol(Qwt.QwtSymbol.Diamond, QColor(Qt.yellow), QColor(Qt.green), QSize(8, 8))) self.d_marker2.attach(self) self.setDamp(0) self.setAutoReplot(True)
def updateCurves(self): speed = 2 * 3.14159 / 25000.0 # a cycle every 25 seconds phase = self.d_time.elapsed() * speed for i in range(len(self.d_curves)): self.d_curves[i].updateSamples( phase ) #QApplication a( argc, argv ); if __name__ == '__main__': a = QApplication(sys.argv) plot = Plot() #if USE_OPENGL #canvas = Qwt.QwtPlotGLCanvas() #canvas.setFrameStyle( Qwt.QwtPlotGLCanvas.NoFrame ) #else canvas = Qwt.QwtPlotCanvas(); canvas.setFrameStyle( QFrame.NoFrame ); canvas.setPaintAttribute( Qwt.QwtPlotCanvas.BackingStore, False ) #endif plot.setCanvas( canvas ) plot.setCanvasBackground( QColor( 30, 30, 50 ) ) plot.resize( 400, 400 ) plot.show() sys.exit(a.exec_())