Search code examples
pythonpyqtgraph

pyqtgraph: add legend for lines in a plot


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?


Solution

  • 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.