【发布时间】:2019-11-17 00:34:19
【问题描述】:
使用 pyQt5,我使用 self.graphicsView.clear() 和 self.graphicsView.plot() 函数不断更新带有数据的绘图。
我在创建小部件之前使用命令 pyqtgraph.setConfigOption('background', '#f0f0f0') 更改了背景颜色,但这不适用于图例项。背景为灰色,图例显示为黑色。
如何更改此图例项的样式?
我认为我根据我如何引用每个新的情节项目来实施这个错误。我相信这些需要以某种方式实例化,但是 instance = self.graphicsView.plot(title = "example title") 然后用 instance.LegendItem 引用,然后用 HTML 之类的标签访问它。 (找不到参考了)
def plotGraph(self, value):
"""
plots value to graph
"""
self.graphQueue(self.plotDataBuffer, value) #buffered data input, max vals = value
self.graphicsView.clear() #clear data for continuous plot
self.graphicsView.addLegend()
self.graphicsView.plot(self.plotDataBuffer, pen='r', name='Data') #plot item
注意:这个函数是循环调用的
addLengend() 命令每次调用都会创建一个新的图例,但是,我的理解是这只会创建一次,如果再次调用它只会引用已经创建的图例?
那么,我如何正确初始化图例一次,然后格式化样式以匹配背景而不是黑色?
简化示例:
import pyqtgraph as pg
from PyQt5 import QtGui
import numpy as np
import sys
pg.setConfigOption('background', '#f0f0f0')
plotWidget = pg.plot(title="Stackoverflow Simplified Example")
app = QtGui.QApplication(sys.argv)
while(1):
x = np.arange(50)
y = np.random.normal(size=(3, 50))
plotWidget.clear()
plotWidget.addLegend()
for i in range(3):
plotWidget.plot(x, y[i], pen=(i,3), name = "test {}".format(i))
app.processEvents()
if __name__ == '__main__':
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
app.exec_() # Start QApplication event loop ***
【问题讨论】:
-
我发现这样做的唯一方法是手动编辑 LegendItem.py。
标签: python python-3.x pyqt pyqt5 pyqtgraph