如何在 pyqtgraph 中设置跟踪名称?
How to set trace name in pyqtgraph?
我正在用这个class画轨迹,我有2条线要描,但是我不能显示每条线的名字,怎么办?
class Plot2D():
def __init__(self):
self.traces = dict()
#QtGui.QApplication.setGraphicsSystem('raster')
self.app = QtGui.QApplication([])
#mw = QtGui.QMainWindow()
#mw.resize(800,800)
self.win = pg.GraphicsWindow(title="Detecting cluck")
self.win.resize(1000,600)
self.win.setWindowTitle('Detecting')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
self.canvas = self.win.addPlot(title="改装车检测")
self.canvas.setYRange(0, 1)
def start(self):
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
def trace(self,name,dataset_x,dataset_y,sColor):
if name in self.traces:
self.traces[name].setData(dataset_x,dataset_y)
else:
self.traces[name] = self.canvas.plot(
pen=pg.mkPen(sColor, width=3), name="car")
我得到了什么:
我得到了什么
我想要的:
必须使用addLegend()
,另外在剧情中建立一个名字:
import sys
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np
class Plot2D():
def __init__(self):
self.traces = dict()
self.app = QtGui.QApplication([])
self.win = pg.GraphicsWindow(title="Detecting")
self.win.resize(1000,600)
pg.setConfigOptions(antialias=True)
self.canvas = self.win.addPlot(title="改装车检测")
self.canvas.addLegend()
self.canvas.setYRange(0, 1)
def start(self):
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
def trace(self,name,dataset_x,dataset_y,sColor):
if name in self.traces:
self.traces[name].setData(dataset_x,dataset_y)
else:
self.traces[name] = self.canvas.plot(dataset_x, dataset_y,
pen=pg.mkPen(sColor, width=3), name=name)
if __name__ == '__main__':
p = Plot2D()
p.trace("name1", range(100), 0.5 + np.random.normal(size=100, scale=0.1), 'r')
p.trace("name2", range(100), 0.5 + np.random.normal(size=100, scale=0.1), 'w')
p.start()
更新:
如果要更改字体大小,可以使用 HTML
self.traces[name] = self.canvas.plot(dataset_x, dataset_y,
pen=pg.mkPen(sColor, width=3), name='''<font size="15">{}</font>'''.format(name))
我正在用这个class画轨迹,我有2条线要描,但是我不能显示每条线的名字,怎么办?
class Plot2D():
def __init__(self):
self.traces = dict()
#QtGui.QApplication.setGraphicsSystem('raster')
self.app = QtGui.QApplication([])
#mw = QtGui.QMainWindow()
#mw.resize(800,800)
self.win = pg.GraphicsWindow(title="Detecting cluck")
self.win.resize(1000,600)
self.win.setWindowTitle('Detecting')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
self.canvas = self.win.addPlot(title="改装车检测")
self.canvas.setYRange(0, 1)
def start(self):
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
def trace(self,name,dataset_x,dataset_y,sColor):
if name in self.traces:
self.traces[name].setData(dataset_x,dataset_y)
else:
self.traces[name] = self.canvas.plot(
pen=pg.mkPen(sColor, width=3), name="car")
我得到了什么:
我得到了什么
我想要的:
必须使用addLegend()
,另外在剧情中建立一个名字:
import sys
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import numpy as np
class Plot2D():
def __init__(self):
self.traces = dict()
self.app = QtGui.QApplication([])
self.win = pg.GraphicsWindow(title="Detecting")
self.win.resize(1000,600)
pg.setConfigOptions(antialias=True)
self.canvas = self.win.addPlot(title="改装车检测")
self.canvas.addLegend()
self.canvas.setYRange(0, 1)
def start(self):
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
def trace(self,name,dataset_x,dataset_y,sColor):
if name in self.traces:
self.traces[name].setData(dataset_x,dataset_y)
else:
self.traces[name] = self.canvas.plot(dataset_x, dataset_y,
pen=pg.mkPen(sColor, width=3), name=name)
if __name__ == '__main__':
p = Plot2D()
p.trace("name1", range(100), 0.5 + np.random.normal(size=100, scale=0.1), 'r')
p.trace("name2", range(100), 0.5 + np.random.normal(size=100, scale=0.1), 'w')
p.start()
更新:
如果要更改字体大小,可以使用 HTML
self.traces[name] = self.canvas.plot(dataset_x, dataset_y,
pen=pg.mkPen(sColor, width=3), name='''<font size="15">{}</font>'''.format(name))