Как включить легенды и изменить стиль в pyqtgraph? - PullRequest
0 голосов
/ 07 июля 2019

Использование 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 ***
...