Позиционирование легенды PyQtGraph
Прошу подсказать как позиционируется легенда на графике PyQtGraph
self.parent.graphicsView3port.addLegend()
self.parent.graphicsView3port.setXRange(0, x, padding=0) # Границы оси X
self.parent.graphicsView3port.setYRange(0, y, padding=0) # Границы оси Y
pen = pyqtgraph.mkPen(color=(0, 0, 255), width=2, style=QtCore.Qt.SolidLine)
self.parent.graphicsView3port.plot(percent_open_a, flow_list_coeff_a, pen=pen, name="A")
pen = pyqtgraph.mkPen(color=(255, 170, 0), width=2, style=QtCore.Qt.SolidLine)
self.parent.graphicsView3port.plot(percent_open_a, flow_list_coeff_b, pen=pen, name="B")
pen = pyqtgraph.mkPen(color=(170, 0, 255), width=2, style=QtCore.Qt.SolidLine)
self.parent.graphicsView3port.plot(percent_open_a, flow_list_coeff_ab, pen=pen, name="AB")
Не могу разобраться как сместить легенду ниже. Если добавляю аргумент в addLegend(), то легенда или в левом верхнем углу или в нижнем правом. Прочитал статью: https://www.pythonguis.com/tutorials/plotting-pyqtgraph/ как сделать offset так и не понял. Что куда нужно записать?
Ответы (1 шт):
Пожалуйста, ВСЕГДА предоставьте минимально-ВОСПРОИЗВОДИМЫЙ пример, который демонстрирует проблему.
По умолчанию легенда отображается в левом верхнем углу.
Если вы хотите переместить его, вы можете легко перетащить легенду
в другое место.
Вы также можете указать смещение по умолчанию,
передав 2-кортеж в параметр offset при создании легенды.
import sys
from PyQt5 import QtWidgets, QtCore, QtGui, uic
import pyqtgraph as pg
from pyqtgraph import PlotWidget, plot
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.graphWidget = pg.PlotWidget()
self.setCentralWidget(self.graphWidget)
hour = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]
self.graphWidget.plot(hour, temperature)
self.graphWidget.setBackground('w')
pen = pg.mkPen(color=(255, 0, 0), width=3, style=QtCore.Qt.DashLine)
self.graphWidget.plot(hour, temperature, symbol='o', pen=pen)
pen = pg.mkPen(color=(255, 0, 0), width=3, style=QtCore.Qt.DashLine)
# addLegend как только вы предоставите pyqtgraph имя для кривой,
# он сам создаст соответствующий элемент легенды.
# !!! Однако важно вызывать plt.addLegend() ДО того, как вы создадите кривые.
# -------------------------------> vvvvvvvvvvvvvvvv <-------------------------
self.graphWidget.addLegend(offset=(10, 300))
self.graphWidget.plot(
hour, temperature,
name = "__Legend 1",
pen=pen, symbol='+',
symbolSize=20, symbolBrush=('b')
)
self.graphWidget.setTitle(
"Ваше название здесь",
color='7733FF',
size='20pt',
bold=True,
italic=True
)
self.graphWidget.setLabel(
'left',
"<span style=\"color:red; font-size:20px\">Temperature (°C)</span>")
self.graphWidget.setLabel(
'bottom',
"<span style=\"color:red; font-size:20px\">Hour (H)</span>")
self.graphWidget.showGrid(x=True, y=True)
self.graphWidget.setXRange(2, 10, padding=0)
self.graphWidget.setYRange(28, 36, padding=0)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

