pyqtgraph: add legend for lines in a plot

MikeyB picture MikeyB · May 22, 2013 · Viewed 15.8k times · Source

I'm using pyqtgraph and I'd like to add an item in the legend for InfiniteLines.

I've adapted the example code to demonstrate:

# -*- coding: utf-8 -*-
"""
Demonstrates basic use of LegendItem

"""
import initExample ## Add path to library (just for examples; you do not need this)

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui

plt = pg.plot()
plt.setWindowTitle('pyqtgraph example: Legend')
plt.addLegend()

c1 = plt.plot([1,3,2,4], pen='r', name='red plot')
c2 = plt.plot([2,1,4,3], pen='g', fillLevel=0, fillBrush=(255,255,255,30), name='green plot')
c3 = plt.addLine(y=4, pen='y')
# TODO: add legend item indicating "maximum value"

## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

What I get as a result is: plot image

How do I add an appropriate legend item?

Answer

Tulkas Astaldo picture Tulkas Astaldo · Oct 7, 2015

pyqtgraph automatically adds an item to the legend if it is created with the "name" parameter. The only adjustment needed in the above code would be as follows:

c3 = plt.plot (y=4, pen='y', name="maximum value")

as soon as you provide pyqtgraph with a name for the curve it will create the according legend item by itself. It is important though to call plt.addLegend() BEFORE you create the curves.