def __init__(self, *args): colors = [ Qt.red, Qt.darkRed, Qt.green, Qt.darkGreen, Qt.blue, Qt.darkBlue, Qt.cyan, Qt.darkCyan, Qt.magenta, Qt.darkMagenta, Qt.yellow, Qt.darkYellow, Qt.gray, Qt.darkGray, Qt.lightGray, Qt.black ] QwtPlot.__init__(self, *args) self.setCanvasBackground(Qt.white) self.alignScales() # grid self.grid = QwtPlotGrid() self.grid.attach(self) self.grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) # set titles self.setTitle("Gráfico") self.setAxisTitle(QwtPlot.xBottom, 'Tempo [hh:mm:ss] -->') self.setAxisTitle(QwtPlot.yLeft, 'Nível [mm] -->') """Habilita e denomina eixo Y2""" self.enableAxis(QwtPlot.yRight) self.setAxisTitle(QwtPlot.yRight, '<-- Temp. [ºC]') self.nplots = 16 self.Plots = np.array([]) self.Data = np.array([]) for i in range(self.nplots): self.Plots = np.append(self.Plots, QwtPlotCurve()) self.Plots[i].setPen(QPen(colors[i])) self.Plots[i].attach(self) """define como valor plotado será escrito no eixo x""" self.setAxisScaleDraw(QwtPlot.xBottom, TimeScaleDraw()) self.Data = np.append(self.Data, dataclass()) """Os índices pares se referem à plots no eixo Y1, e os índices ímpares são ligados ao eixo Y2""" if divmod(i, 2)[1] == 1: self.Plots[i].setYAxis(QwtPlot.yRight) self.Plots[i].setData(self.Data[i].x, self.Data[i].y) # legend #self.legend = QwtLegend #QwtLegend().setFrameStyle(QFrame.Box) #self.insertLegend(QwtLegend().setFrameStyle(QFrame.Box), QwtPlot.BottomLegend) self.insertLegend(QwtLegend(), QwtPlot.BottomLegend) # replot self.replot() # zoom # self.zoomer = QwtPlotZoomer(QwtPlot.xBottom, # QwtPlot.yLeft, # QwtPicker.DragSelection, # QwtPicker.AlwaysOn, # self.canvas()) # # self.zoomer.setRubberBandPen(QPen(Qt.green)) self.startTimer(50)
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setCanvasBackground(Qt.white) curva = QwtPlotCurve('Altitud') self.phase=0 ################################################## # Initialize data self.x = [0] self.y = [0] # Title of the graph self.g1title = "Altitude= " + str(self.x[0]) self.insertLegend(QwtLegend(), QwtPlot.BottomLegend); self.curveR = QwtPlotCurve("Altitude") self.curveR.attach(self) self.curveR.setPen(QPen(Qt.blue)) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "Altitude(m)") self.setAxisScale(QwtPlot.xBottom, 0.0, 20) self.setAxisScale(QwtPlot.yLeft, 0.0, 20) self.pal = QPalette() #####palette for background self.pal.setColor(QPalette.Text, Qt.white) self.pal.setColor(QPalette.Foreground, Qt.white) self.setPalette(self.pal) self.counter=0 ###counter for actualize data, is the same for all of the graphs/data grid = QwtPlotGrid() grid.attach(self) grid.setPen(QPen(Qt.black, 0, Qt.DotLine))
def __init__(self, *args): QwtPlot.__init__(self, *args) # Initialize Decice address, #self.uut_dev = GPIBdevice.GPIBdevice(args[0]) self.rm = visa.ResourceManager() print(self.rm.list_resources()) self.uut_dev = self.rm.open_resource(args[0]) print('open pass') # Initialize 坐标轴 self.setCanvasBackground(Qt.white) self.alignScales() grid = QwtPlotGrid() grid.attach(self) grid.setMajorPen(QPen(Qt.black, 0, Qt.DotLine)) self.setAxisScale(QwtPlot.xBottom, 0.0, 300.1, 10.0) self.setAxisAutoScale(QwtPlot.yLeft, True) #self.setAxisScale(QwtPlot.yLeft,4.0,20.0,2.0) self.x = np.arange( 0.0, 300.1, 0.5 ) #0.25 for ONE POINT, THIS SHOULD BE Align to the reading rate:250ms self.z = np.zeros(len(self.x), np.float) self.setTitle("UUT Reading Monitor") self.insertLegend(QwtLegend(), QwtPlot.RightLegend) self.curveL = QwtPlotCurve("UUT Reading") self.curveL.attach(self) self.curveL.setPen(QPen(Qt.red)) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "UUT - Reading") self.replot() self.startTimer(500) #ms# FOR GET READING self.starttime = time.clock() #unit: s self.idx = 0 self.readfmt = "%.8f" self.Saveinfo("Starting...") IDN = self.uut_get_val(self.uut_dev, "*IDN?\r") print IDN print "Starting..."
def __init__(self, *args): QwtPlot.__init__(self, *args) self.insertLegend(QwtLegend(), QwtPlot.RightLegend) self.enableAxis(self.xBottom) # insert a few curves self.Reward = QwtPlotCurve('Reward') self.Reward.setPen(QPen(Qt.darkGreen)) self.Reward.attach(self) # initialize the data self.Reward.setData([0], [0]) # replot self.replot()
def __init__(self, *args): QwtPlot.__init__(self, *args) self.insertLegend(QwtLegend(), QwtPlot.RightLegend) self.enableAxis(self.xBottom) # insert a few curves self.Alpha = QwtPlotCurve('Alpha') self.Alpha.setPen(QPen(Qt.red)) self.Alpha.attach(self) self.Epsilon = QwtPlotCurve('Epsilon') self.Epsilon.setPen(QPen(Qt.blue)) self.Epsilon.attach(self) # initialize the data self.Alpha.setData([0], [0]) self.Epsilon.setData([0], [0]) # replot self.replot()
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle('ReallySimpleDemo.py') self.insertLegend(QwtLegend(), QwtPlot.RightLegend) self.setAxisTitle(QwtPlot.xBottom, 'x -->') self.setAxisTitle(QwtPlot.yLeft, 'y -->') self.enableAxis(self.xBottom) # insert a few curves cSin = QwtPlotCurve('y = sin(x)') cSin.setPen(QPen(Qt.red)) cSin.attach(self) cCos = QwtPlotCurve('y = cos(x)') cCos.setPen(QPen(Qt.blue)) cCos.attach(self) # make a Numeric array for the horizontal data x = np.arange(0.0, 10.0, 0.1) # initialize the data cSin.setData(x, np.sin(x)) cCos.setData(x, np.cos(x)) # insert a horizontal marker at y = 0 mY = QwtPlotMarker() mY.setLabel(QwtText('y = 0')) mY.setLabelAlignment(Qt.AlignRight | Qt.AlignTop) mY.setLineStyle(QwtPlotMarker.HLine) mY.setYValue(0.0) mY.attach(self) # insert a vertical marker at x = 2 pi mX = QwtPlotMarker() mX.setLabel(QwtText('x = 2 pi')) mX.setLabelAlignment(Qt.AlignRight | Qt.AlignTop) mX.setLineStyle(QwtPlotMarker.VLine) mX.setXValue(2 * np.pi) mX.attach(self) # replot self.replot()
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setCanvasBackground(Qt.white) # Initialize data self.x = [0] self.y = [0] self.setTitle("A Moving QwtPlot Demonstration") self.insertLegend(QwtLegend(), QwtPlot.BottomLegend); self.curveR = QwtPlotCurve("Data Moving Right") self.curveR.attach(self) self.curveR.setPen(QPen(Qt.red)) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "Values") self.startTimer(400) self.phase = 0.0
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setCanvasBackground(Qt.white) self.alignScales() # Initialize data self.x = np.arange(0.0, 100.1, 0.5) self.y = np.zeros(len(self.x), np.float) self.z = np.zeros(len(self.x), np.float) self.setTitle("A Moving QwtPlot Demonstration") self.insertLegend(QwtLegend(), QwtPlot.BottomLegend); self.curveR = QwtPlotCurve("Data Moving Right") self.curveR.attach(self) self.curveL = QwtPlotCurve("Data Moving Left") self.curveL.attach(self) self.curveL.setSymbol(QwtSymbol(QwtSymbol.Ellipse, QBrush(), QPen(Qt.yellow), QSize(7, 7))) self.curveR.setPen(QPen(Qt.red)) self.curveL.setPen(QPen(Qt.blue)) mY = QwtPlotMarker() mY.setLabelAlignment(Qt.AlignRight | Qt.AlignTop) mY.setLineStyle(QwtPlotMarker.HLine) mY.setYValue(0.0) mY.attach(self) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "Values") self.startTimer(50) self.phase = 0.0
def __init__(self, *args): QwtPlot.__init__(self, *args) # set plot title self.setTitle('ImagePlot') # set plot layout self.plotLayout().setCanvasMargin(0) self.plotLayout().setAlignCanvasToScales(True) # set legend legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Clickable) self.insertLegend(legend, QwtPlot.RightLegend) # set axis titles self.setAxisTitle(QwtPlot.xBottom, 'time (s)') self.setAxisTitle(QwtPlot.yLeft, 'frequency (Hz)') colorMap = QwtLinearColorMap(Qt.blue, Qt.red) interval = QwtInterval(-1, 1) self.enableAxis(QwtPlot.yRight) self.setAxisScale(QwtPlot.yRight, -1, 1) self.axisWidget(QwtPlot.yRight).setColorBarEnabled(True) self.axisWidget(QwtPlot.yRight).setColorMap(interval, colorMap) # calculate 3 NumPy arrays x = np.arange(-2 * np.pi, 2 * np.pi, 0.01) y = np.pi * np.sin(x) z = 4 * np.pi * np.cos(x) * np.cos(x) * np.sin(x) # attach a curve curve = QwtPlotCurve('y = pi*sin(x)') curve.attach(self) curve.setPen(QPen(Qt.green, 2)) curve.setData(x, y) # attach another curve curve = QwtPlotCurve('y = 4*pi*sin(x)*cos(x)**2') curve.attach(self) curve.setPen(QPen(Qt.black, 2)) curve.setData(x, z) # attach a grid grid = QwtPlotGrid() grid.attach(self) grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) # attach a horizontal marker at y = 0 marker = QwtPlotMarker() marker.attach(self) marker.setValue(0.0, 0.0) marker.setLineStyle(QwtPlotMarker.HLine) marker.setLabelAlignment(Qt.AlignRight | Qt.AlignTop) marker.setLabel(QwtText('y = 0')) # attach a vertical marker at x = pi marker = QwtPlotMarker() marker.attach(self) marker.setValue(np.pi, 0.0) marker.setLineStyle(QwtPlotMarker.VLine) marker.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) marker.setLabel(QwtText('x = pi')) # attach a plot image plotImage = PlotImage('Image') plotImage.attach(self) plotImage.setData(square(512, -2 * np.pi, 2 * np.pi), (-2 * np.pi, 2 * np.pi), (-2 * np.pi, 2 * np.pi)) legend.SIG_CLICKED.connect(self.toggleVisibility) # replot self.replot()
def __init__(self, *args): # colors = [Qt.Qt.red, Qt.Qt.yellow, Qt.Qt.green, Qt.Qt.blue, Qt.Qt.cyan, Qt.Qt.magenta, Qt.Qt.gray, Qt.Qt.white, # Qt.Qt.darkRed, Qt.Qt.darkYellow, Qt.Qt.darkGreen, Qt.Qt.darkBlue, Qt.Qt.darkCyan, # Qt.Qt.darkMagenta, Qt.Qt.lightGray, Qt.Qt.darkGray] #colors = [Qt.red, Qt.darkRed, Qt.green, Qt.darkGreen, Qt.blue, # Qt.darkBlue, Qt.cyan, Qt.darkCyan, Qt.magenta, # Qt.darkMagenta, Qt.yellow, Qt.darkYellow, Qt.gray, # Qt.darkGray, Qt.lightGray, Qt.black] colors = [ QColor('#CC0000'), QColor('#FF3333'), QColor('#CC6600'), QColor('#FF9933'), QColor('#CCCC00'), QColor('#FFFF33'), QColor('#66CC00'), QColor('#00CCCC'), QColor('#33FFFF'), QColor('#0066CC'), QColor('#3399FF'), QColor('#3399FF'), QColor('#0000CC'), QColor('#6600CC'), QColor('#9933FF'), QColor('#CC00CC'), QColor('#FF33FF'), QColor('#CC0066'), QColor('#FF3399'), QColor('#C0C0C0') ] QwtPlot.__init__(self, *args) self.setCanvasBackground(Qt.black) self.alignScales() # grid self.grid = QwtPlotGrid() self.grid.attach(self) self.grid.setPen(QPen(Qt.white, 0, Qt.DotLine)) # setting axis title. The yLeft axis title can chance to 'Temperature', depending on plot preferences self.setAxisTitle(QwtPlot.xBottom, 'Time [hh:mm:ss]') self.setAxisTitle(QwtPlot.yLeft, 'Height [mm]') # Habilita e denomina eixo Y2 self.enableAxis(QwtPlot.yRight) self.setAxisTitle(QwtPlot.yRight, 'Temperature[ºC]') self.nplots = 40 self.Plots = np.array([]) self.Data = np.array([]) for i in range(self.nplots): self.Plots = np.append(self.Plots, QwtPlotCurve()) if (i % 2 == 0): pen = QPen(colors[int(i / 2)], 1, Qt.SolidLine) else: pen = QPen(colors[int(i / 2)], 1, Qt.DashLine) self.Plots[i].setPen(pen) self.Plots[i].attach(self) """define como valor plotado será escrito no eixo x""" self.setAxisScaleDraw(QwtPlot.xBottom, TimeScaleDraw()) self.Data = np.append(self.Data, dataclass()) if divmod(i, 2)[1] == 1: self.Plots[i].setYAxis(QwtPlot.yRight) # define a tupple that will contain plot data, expressed in cartesian coordinates self.Plots[i].setData(self.Data[i].x, self.Data[i].y) # legend # self.legend = QwtLegend() # self.legend.setFrameStyle(QFrame.Box) self.insertLegend(QwtLegend(), QwtPlot.BottomLegend) # replot self.replot() # zoom # self.zoomer = QwtPlotZoomer(QwtPlot.xBottom, # QwtPlot.yLeft, # QwtPicker.DragSelection, # QwtPicker.AlwaysOn, # self.canvas()) # # self.zoomer.setRubberBandPen(QPen(Qt.green)) self.startTimer(50)
def __init__(self, *args): QwtPlot.__init__(self, *args) self.uut_dev = None self.timerId = None self.interval = 250 # ms fileTIME = datetime.datetime.now() File_timestamp = "%04d-%02d-%02d_%02d%02d%02d" % ( fileTIME.year, fileTIME.month, fileTIME.day, fileTIME.hour, fileTIME.minute, fileTIME.second) self.fileNamme = '.\data\data_%s.txt' % File_timestamp print(self.fileNamme) # default parameters from config file self.x_ZERO = config.X_lower self.x_range = config.X_upper self.x_interval = config.X_grid_interval self.y_range_Upper = config.Y_upper self.y_range_Lower = config.Y_lower self.y_interval = config.Y_grid_interval self.unit = 'kPa' # default value, will replaced by actual reading. #self.getReadingCommand = r"UPPER_VAL?\r\n" # default pass and pac #self.getResp_rex = r'^[-]?([0-9]{1,}[.]?[0-9]*)' self.lenth = config.Slope_lenth # 40 = 10s caculate the slowrate # QwtPlot property # Initialize 坐标轴 self.setCanvasBackground(Qt.white) #Qt.white self.alignScales() grid = QwtPlotGrid() grid.attach(self) grid.setMajorPen(QPen(Qt.black, 0, Qt.DotLine)) # x Axis property #self.setAxisScaleDraw(QwtPlot.xBottom, TimeScaleDraw(self.cpuStat.upTime())) #timeScale = QwtDateScaleDraw(Qt.LocalTime) #print(timeScale) #self.setAxisScaleDraw(QwtPlot.xBottom, timeScale) self.setAxisScale(QwtPlot.xBottom, 0.0, self.x_range, self.x_interval) #self.setAxisAutoScale(QwtPlot.yLeft,True) #self.setAxisScale(QwtPlot.yLeft,99.99,100.0,0.0005) self.setAxisScale(QwtPlot.yLeft, self.y_range_Lower, self.y_range_Upper, self.y_interval) self.setAxisLabelRotation(QwtPlot.xBottom, -45.0) self.x = np.arange( 0.0, self.x_range + 1, 0.25 ) #0.25 for ONE POINT, THIS SHOULD BE Align to the reading rate:250ms #self.z = np.zeros(len(self.x), np.float) list = [] for i in range(len(self.x)): list.append(0.0) self.z = np.array(list) rlist = [] for i in range(self.lenth): # 10s rlist.append(0.0) self.RateList = np.array(rlist) self.setTitle("UUT Reading Monitor - OutPort(%s)\r\n" % (self.unit)) self.insertLegend(QwtLegend(), QwtPlot.RightLegend) self.curveL = QwtPlotCurve("UUT Reading") self.curveL.attach(self) pen = QPen(Qt.red) pen.setWidth(1.5) self.curveL.setPen(pen) # show peak line and point value fn = self.fontInfo().family() self.peakMarker = m = QwtPlotMarker() m.setLineStyle(QwtPlotMarker.HLine) m.setLabelAlignment(Qt.AlignLeft | Qt.AlignTop) m.setLinePen(QPen(Qt.blue, 1.5, Qt.DashDotLine)) text = QwtText('Reading: ----') text.setColor(Qt.red) text.setBackgroundBrush(QBrush(self.canvasBackground())) text.setFont(QFont(fn, 12, QFont.Bold)) m.setLabel(text) # MarkPoint symbol m.setSymbol( QwtSymbol(QwtSymbol.Diamond, QBrush(Qt.blue), QPen(Qt.green), QSize(7, 7))) m.attach(self) # text marker self.txtMarker = m = QwtPlotMarker() m.setValue(self.x_range / 2, self.y_range_Upper - self.y_interval / 2) # show position m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) text = QwtText('Slope Rate: ----') text.setFont(QFont(fn, 20, QFont.Bold)) text.setColor(Qt.white) text.setBackgroundBrush(QBrush(Qt.black)) text.setBorderPen(QPen(Qt.red, 2)) m.setLabel(text) m.attach(self) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "UUT - Reading(%s)" % (self.unit)) self.replot() #self.startTimer(250)#ms# FOR GET READING self.starttime = time.clock() #unit: s self.idx = 0 self.readfmt = "%f" self.Saveinfo("Starting...")
def __init__(self, *args): QwtPlot.__init__(self, *args) self.curves = {} self.data = {} self.timeData = 1.0 * np.arange(HISTORY-1, -1, -1) self.cpuStat = CpuStat() self.setAutoReplot(False) self.plotLayout().setAlignCanvasToScales(True) legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Checkable) self.insertLegend(legend, QwtPlot.RightLegend) self.setAxisTitle(QwtPlot.xBottom, "System Uptime [h:m:s]") self.setAxisScaleDraw( QwtPlot.xBottom, TimeScaleDraw(self.cpuStat.upTime())) self.setAxisScale(QwtPlot.xBottom, 0, HISTORY) self.setAxisLabelRotation(QwtPlot.xBottom, -50.0) self.setAxisLabelAlignment( QwtPlot.xBottom, Qt.AlignLeft | Qt.AlignBottom) self.setAxisTitle(QwtPlot.yLeft, "Cpu Usage [%]") self.setAxisScale(QwtPlot.yLeft, 0, 100) background = Background() background.attach(self) pie = CpuPieMarker() pie.attach(self) curve = CpuCurve('System') curve.setColor(Qt.red) curve.attach(self) self.curves['System'] = curve self.data['System'] = np.zeros(HISTORY, np.float) curve = CpuCurve('User') curve.setColor(Qt.blue) curve.setZ(curve.z() - 1.0) curve.attach(self) self.curves['User'] = curve self.data['User'] = np.zeros(HISTORY, np.float) curve = CpuCurve('Total') curve.setColor(Qt.black) curve.setZ(curve.z() - 2.0) curve.attach(self) self.curves['Total'] = curve self.data['Total'] = np.zeros(HISTORY, np.float) curve = CpuCurve('Idle') curve.setColor(Qt.darkCyan) curve.setZ(curve.z() - 3.0) curve.attach(self) self.curves['Idle'] = curve self.data['Idle'] = np.zeros(HISTORY, np.float) self.showCurve(self.curves['System'], True) self.showCurve(self.curves['User'], True) self.showCurve(self.curves['Total'], False) self.showCurve(self.curves['Idle'], False) self.startTimer(1000) legend.SIG_CHECKED.connect(self.showCurve) self.replot()
def __init__(self, *args): QwtPlot.__init__(self, *args) # set plot title self.setTitle("ImagePlot") # set plot layout self.plotLayout().setCanvasMargin(0) self.plotLayout().setAlignCanvasToScales(True) # set legend legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Clickable) self.insertLegend(legend, QwtPlot.RightLegend) # set axis titles self.setAxisTitle(QwtPlot.xBottom, "time (s)") self.setAxisTitle(QwtPlot.yLeft, "frequency (Hz)") colorMap = QwtLinearColorMap(Qt.blue, Qt.red) interval = QwtInterval(-1, 1) self.enableAxis(QwtPlot.yRight) self.setAxisScale(QwtPlot.yRight, -1, 1) self.axisWidget(QwtPlot.yRight).setColorBarEnabled(True) self.axisWidget(QwtPlot.yRight).setColorMap(interval, colorMap) # calculate 3 NumPy arrays x = np.arange(-2 * np.pi, 2 * np.pi, 0.01) y = np.pi * np.sin(x) z = 4 * np.pi * np.cos(x) * np.cos(x) * np.sin(x) # attach a curve QwtPlotCurve.make(x, y, title="y = pi*sin(x)", linecolor=Qt.green, linewidth=2, plot=self) # attach another curve QwtPlotCurve.make(x, z, title="y = 4*pi*sin(x)*cos(x)**2", linewidth=2, plot=self) # attach a grid grid = QwtPlotGrid() grid.attach(self) grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) # attach a horizontal marker at y = 0 QwtPlotMarker.make( label="y = 0", linestyle=QwtPlotMarker.HLine, align=Qt.AlignRight | Qt.AlignTop, plot=self, ) # attach a vertical marker at x = pi QwtPlotMarker.make( np.pi, 0.0, label="x = pi", linestyle=QwtPlotMarker.VLine, align=Qt.AlignRight | Qt.AlignBottom, plot=self, ) # attach a plot image plotImage = PlotImage("Image") plotImage.attach(self) plotImage.setData( square(512, -2 * np.pi, 2 * np.pi), (-2 * np.pi, 2 * np.pi), (-2 * np.pi, 2 * np.pi), ) legend.clicked.connect(self.toggleVisibility) # replot self.replot()
def __init__(self, *args): QwtPlot.__init__(self, *args) # set plot title self.setTitle('ImagePlot') # set plot layout self.plotLayout().setCanvasMargin(0) self.plotLayout().setAlignCanvasToScales(True) # set legend legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Clickable) self.insertLegend(legend, QwtPlot.RightLegend) # set axis titles self.setAxisTitle(QwtPlot.xBottom, 'time (s)') self.setAxisTitle(QwtPlot.yLeft, 'frequency (Hz)') colorMap = QwtLinearColorMap(Qt.blue, Qt.red) interval = QwtInterval(-1, 1) self.enableAxis(QwtPlot.yRight) self.setAxisScale(QwtPlot.yRight, -1, 1) self.axisWidget(QwtPlot.yRight).setColorBarEnabled(True) self.axisWidget(QwtPlot.yRight).setColorMap(interval, colorMap) # calculate 3 NumPy arrays x = np.arange(-2*np.pi, 2*np.pi, 0.01) y = np.pi*np.sin(x) z = 4*np.pi*np.cos(x)*np.cos(x)*np.sin(x) # attach a curve curve = QwtPlotCurve('y = pi*sin(x)') curve.attach(self) curve.setPen(QPen(Qt.green, 2)) curve.setData(x, y) # attach another curve curve = QwtPlotCurve('y = 4*pi*sin(x)*cos(x)**2') curve.attach(self) curve.setPen(QPen(Qt.black, 2)) curve.setData(x, z) # attach a grid grid = QwtPlotGrid() grid.attach(self) grid.setPen(QPen(Qt.black, 0, Qt.DotLine)) # attach a horizontal marker at y = 0 marker = QwtPlotMarker() marker.attach(self) marker.setValue(0.0, 0.0) marker.setLineStyle(QwtPlotMarker.HLine) marker.setLabelAlignment(Qt.AlignRight | Qt.AlignTop) marker.setLabel(QwtText('y = 0')) # attach a vertical marker at x = pi marker = QwtPlotMarker() marker.attach(self) marker.setValue(np.pi, 0.0) marker.setLineStyle(QwtPlotMarker.VLine) marker.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) marker.setLabel(QwtText('x = pi')) # attach a plot image plotImage = PlotImage('Image') plotImage.attach(self) plotImage.setData(square(512, -2*np.pi, 2*np.pi), (-2*np.pi, 2*np.pi), (-2*np.pi, 2*np.pi)) legend.SIG_CLICKED.connect(self.toggleVisibility) # replot self.replot()
def __init__(self, unattended=False): QwtPlot.__init__(self) self.curves = {} self.data = {} self.timeData = 1.0 * np.arange(self.HISTORY - 1, -1, -1) self.cpuStat = CpuStat() self.setAutoReplot(False) self.plotLayout().setAlignCanvasToScales(True) legend = QwtLegend() legend.setDefaultItemMode(QwtLegendData.Checkable) self.insertLegend(legend, QwtPlot.RightLegend) self.setAxisTitle(QwtPlot.xBottom, "System Uptime [h:m:s]") self.setAxisScaleDraw(QwtPlot.xBottom, TimeScaleDraw(self.cpuStat.upTime())) self.setAxisScale(QwtPlot.xBottom, 0, self.HISTORY) self.setAxisLabelRotation(QwtPlot.xBottom, -50.0) self.setAxisLabelAlignment(QwtPlot.xBottom, Qt.AlignLeft | Qt.AlignBottom) self.setAxisTitle(QwtPlot.yLeft, "Cpu Usage [%]") self.setAxisScale(QwtPlot.yLeft, 0, 100) background = Background() background.attach(self) pie = CpuPieMarker() pie.attach(self) curve = CpuCurve("System") curve.setColor(Qt.red) curve.attach(self) self.curves["System"] = curve self.data["System"] = np.zeros(self.HISTORY, float) curve = CpuCurve("User") curve.setColor(Qt.blue) curve.setZ(curve.z() - 1.0) curve.attach(self) self.curves["User"] = curve self.data["User"] = np.zeros(self.HISTORY, float) curve = CpuCurve("Total") curve.setColor(Qt.black) curve.setZ(curve.z() - 2.0) curve.attach(self) self.curves["Total"] = curve self.data["Total"] = np.zeros(self.HISTORY, float) curve = CpuCurve("Idle") curve.setColor(Qt.darkCyan) curve.setZ(curve.z() - 3.0) curve.attach(self) self.curves["Idle"] = curve self.data["Idle"] = np.zeros(self.HISTORY, float) self.showCurve(self.curves["System"], True) self.showCurve(self.curves["User"], True) self.showCurve(self.curves["Total"], False or unattended) self.showCurve(self.curves["Idle"], False or unattended) self.startTimer(20 if unattended else 1000) legend.checked.connect(self.showCurve) self.replot()
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle('Frequency Response of a 2<sup>nd</sup>-order System') self.setCanvasBackground(Qt.darkBlue) # legend legend = QwtLegend() legend.setFrameStyle(QFrame.Box | QFrame.Sunken) self.insertLegend(legend, QwtPlot.BottomLegend) # grid self.grid = QwtPlotGrid() self.grid.enableXMin(True) self.grid.attach(self) # axes self.enableAxis(QwtPlot.yRight) self.setAxisTitle(QwtPlot.xBottom, '\u03c9/\u03c9<sub>0</sub>') self.setAxisTitle(QwtPlot.yLeft, 'Amplitude [dB]') self.setAxisTitle(QwtPlot.yRight, 'Phase [\u00b0]') self.setAxisMaxMajor(QwtPlot.xBottom, 6) self.setAxisMaxMinor(QwtPlot.xBottom, 10) self.setAxisScaleEngine(QwtPlot.xBottom, QwtLogScaleEngine()) # curves self.curve1 = QwtPlotCurve('Amplitude') self.curve1.setRenderHint(QwtPlotItem.RenderAntialiased) self.curve1.setPen(QPen(Qt.yellow)) self.curve1.setYAxis(QwtPlot.yLeft) self.curve1.attach(self) self.curve2 = QwtPlotCurve('Phase') self.curve2.setRenderHint(QwtPlotItem.RenderAntialiased) self.curve2.setPen(QPen(Qt.cyan)) self.curve2.setYAxis(QwtPlot.yRight) self.curve2.attach(self) # alias fn = self.fontInfo().family() # marker self.dB3Marker = m = QwtPlotMarker() m.setValue(0.0, 0.0) m.setLineStyle(QwtPlotMarker.VLine) m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) m.setLinePen(QPen(Qt.green, 2, Qt.DashDotLine)) text = QwtText('') text.setColor(Qt.green) text.setBackgroundBrush(Qt.red) text.setFont(QFont(fn, 12, QFont.Bold)) m.setLabel(text) m.attach(self) self.peakMarker = m = QwtPlotMarker() m.setLineStyle(QwtPlotMarker.HLine) m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) m.setLinePen(QPen(Qt.red, 2, Qt.DashDotLine)) text = QwtText('') text.setColor(Qt.red) text.setBackgroundBrush(QBrush(self.canvasBackground())) text.setFont(QFont(fn, 12, QFont.Bold)) m.setLabel(text) m.setSymbol( QwtSymbol(QwtSymbol.Diamond, QBrush(Qt.yellow), QPen(Qt.green), QSize(7, 7))) m.attach(self) # text marker m = QwtPlotMarker() m.setValue(0.1, -20.0) m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) text = QwtText('[1-(\u03c9/\u03c9<sub>0</sub>)<sup>2</sup>+2j\u03c9/Q]' '<sup>-1</sup>') text.setFont(QFont(fn, 12, QFont.Bold)) text.setColor(Qt.blue) text.setBackgroundBrush(QBrush(Qt.yellow)) text.setBorderPen(QPen(Qt.red, 2)) m.setLabel(text) m.attach(self) self.setDamp(0.01)
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle("Frequency Response of a 2<sup>nd</sup>-order System") self.setCanvasBackground(Qt.darkBlue) # legend legend = QwtLegend() legend.setFrameStyle(QFrame.Box | QFrame.Sunken) self.insertLegend(legend, QwtPlot.BottomLegend) # grid QwtPlotGrid.make(plot=self, enableminor=(True, False), color=Qt.darkGray) # axes self.enableAxis(QwtPlot.yRight) self.setAxisTitle(QwtPlot.xBottom, "\u03c9/\u03c9<sub>0</sub>") self.setAxisTitle(QwtPlot.yLeft, "Amplitude [dB]") self.setAxisTitle(QwtPlot.yRight, "Phase [\u00b0]") self.setAxisMaxMajor(QwtPlot.xBottom, 6) self.setAxisMaxMinor(QwtPlot.xBottom, 10) self.setAxisScaleEngine(QwtPlot.xBottom, QwtLogScaleEngine()) # curves self.curve1 = QwtPlotCurve.make(title="Amplitude", linecolor=Qt.yellow, plot=self, antialiased=True) self.curve2 = QwtPlotCurve.make(title="Phase", linecolor=Qt.cyan, plot=self, antialiased=True) self.dB3Marker = QwtPlotMarker.make( label=QwtText.make(color=Qt.white, brush=Qt.red, weight=QFont.Light), linestyle=QwtPlotMarker.VLine, align=Qt.AlignRight | Qt.AlignBottom, color=Qt.green, width=2, style=Qt.DashDotLine, plot=self, ) self.peakMarker = QwtPlotMarker.make( label=QwtText.make(color=Qt.red, brush=self.canvasBackground(), weight=QFont.Bold), symbol=QwtSymbol.make(QwtSymbol.Diamond, Qt.yellow, Qt.green, (7, 7)), linestyle=QwtPlotMarker.HLine, align=Qt.AlignRight | Qt.AlignBottom, color=Qt.red, width=2, style=Qt.DashDotLine, plot=self, ) QwtPlotMarker.make( xvalue=0.1, yvalue=-20.0, align=Qt.AlignRight | Qt.AlignBottom, label=QwtText.make( "[1-(\u03c9/\u03c9<sub>0</sub>)<sup>2</sup>+2j\u03c9/Q]" "<sup>-1</sup>", color=Qt.white, borderradius=2, borderpen=QPen(Qt.lightGray, 5), brush=Qt.lightGray, weight=QFont.Bold, ), plot=self, ) self.setDamp(0.01)
def __init__(self, *args): QwtPlot.__init__(self, *args) self.setTitle('Frequency Response of a 2<sup>nd</sup>-order System') self.setCanvasBackground(Qt.darkBlue) # legend legend = QwtLegend() legend.setFrameStyle(QFrame.Box | QFrame.Sunken) self.insertLegend(legend, QwtPlot.BottomLegend) # grid self.grid = QwtPlotGrid() self.grid.enableXMin(True) self.grid.attach(self) # axes self.enableAxis(QwtPlot.yRight) self.setAxisTitle(QwtPlot.xBottom, '\u03c9/\u03c9<sub>0</sub>') self.setAxisTitle(QwtPlot.yLeft, 'Amplitude [dB]') self.setAxisTitle(QwtPlot.yRight, 'Phase [\u00b0]') self.setAxisMaxMajor(QwtPlot.xBottom, 6) self.setAxisMaxMinor(QwtPlot.xBottom, 10) self.setAxisScaleEngine(QwtPlot.xBottom, QwtLogScaleEngine()) # curves self.curve1 = QwtPlotCurve('Amplitude') self.curve1.setRenderHint(QwtPlotItem.RenderAntialiased); self.curve1.setPen(QPen(Qt.yellow)) self.curve1.setYAxis(QwtPlot.yLeft) self.curve1.attach(self) self.curve2 = QwtPlotCurve('Phase') self.curve2.setRenderHint(QwtPlotItem.RenderAntialiased); self.curve2.setPen(QPen(Qt.cyan)) self.curve2.setYAxis(QwtPlot.yRight) self.curve2.attach(self) # alias fn = self.fontInfo().family() # marker self.dB3Marker = m = QwtPlotMarker() m.setValue(0.0, 0.0) m.setLineStyle(QwtPlotMarker.VLine) m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) m.setLinePen(QPen(Qt.green, 2, Qt.DashDotLine)) text = QwtText('') text.setColor(Qt.green) text.setBackgroundBrush(Qt.red) text.setFont(QFont(fn, 12, QFont.Bold)) m.setLabel(text) m.attach(self) self.peakMarker = m = QwtPlotMarker() m.setLineStyle(QwtPlotMarker.HLine) m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) m.setLinePen(QPen(Qt.red, 2, Qt.DashDotLine)) text = QwtText('') text.setColor(Qt.red) text.setBackgroundBrush(QBrush(self.canvasBackground())) text.setFont(QFont(fn, 12, QFont.Bold)) m.setLabel(text) m.setSymbol(QwtSymbol(QwtSymbol.Diamond, QBrush(Qt.yellow), QPen(Qt.green), QSize(7,7))) m.attach(self) # text marker m = QwtPlotMarker() m.setValue(0.1, -20.0) m.setLabelAlignment(Qt.AlignRight | Qt.AlignBottom) text = QwtText( '[1-(\u03c9/\u03c9<sub>0</sub>)<sup>2</sup>+2j\u03c9/Q]' '<sup>-1</sup>' ) text.setFont(QFont(fn, 12, QFont.Bold)) text.setColor(Qt.blue) text.setBackgroundBrush(QBrush(Qt.yellow)) text.setBorderPen(QPen(Qt.red, 2)) m.setLabel(text) m.attach(self) self.setDamp(0.01)
def __init__(self, *args): QwtPlot.__init__(self, *args) self.Dev_COM = None self.uut_dev = None print(args) if args: self.Dev_COM = args[0] if self.Dev_COM: # Initialize Decice COM, self.uut_dev = device.SerialDevice(False, False, port=self.Dev_COM, baudrate=9600) else: # Initial LAN device #UUT PORT(NOTE: PC need to config the same ip section) self.uut_Client_ip = '169.254.1.3' self.uut_lan_port = 3490 # self.uut_buf_size = 1024 try: self.uut_dev = socket.socket(socket.AF_INET, socket.SOCK_STREAM) Addr = (self.uut_Client_ip, self.uut_lan_port) self.uut_dev.connect(Addr) print('Connectin created!') except Exception as e: # raise Exception(e) #print(self.sendcmd('SYST:REM\r\n')) print(self.sendcmd('*CLS\r\n')) fileTIME = datetime.datetime.now() File_timestamp = "%04d-%02d-%02d_%02d%02d%02d" % ( fileTIME.year, fileTIME.month, fileTIME.day, fileTIME.hour, fileTIME.minute, fileTIME.second) self.fileNamme = r'./data/data_%s.txt' % (File_timestamp) print(self.fileNamme) # Initialize 坐标轴 self.setCanvasBackground(Qt.white) self.alignScales() grid = QwtPlotGrid() grid.attach(self) grid.setMajorPen(QPen(Qt.black, 0, Qt.DotLine)) self.setAxisScale(QwtPlot.xBottom, 0.0, 300.1, 10.0) self.setAxisAutoScale(QwtPlot.yLeft, True) #self.setAxisScale(QwtPlot.yLeft,99.99,100.0,0.0005) self.x = np.arange( 0.0, 300, 0.5 ) #0.5 for ONE POINT, THIS SHOULD BE Align to the reading rate:250ms print(self.x) #self.z = np.zeros(len(self.x), np.float) list = [] for i in range(len(self.x)): list.append(0) self.z = np.array(list) self.setTitle("UUT Reading Monitor - (mA)") self.insertLegend(QwtLegend(), QwtPlot.RightLegend) self.curveL = QwtPlotCurve("UUT Reading") self.curveL.attach(self) self.curveL.setPen(QPen(Qt.red)) self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)") self.setAxisTitle(QwtPlot.yLeft, "UUT - Reading(mA)") self.replot() self.startTimer(500) # ms # FOR GET READING self.starttime = time.clock() #unit: s self.idx = 0 self.readfmt = "%f" self.Saveinfo("Starting...")