pyqtgraph: add legend for lines in a plot

20,084

Solution 1

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.

Solution 2

For this example, you can create an empty PlotDataItem with the correct color and add it to the legend like this:

style = pg.PlotDataItem(pen='y')
plt.plotItem.legend.addItem(l, "maximum value")
Share:
20,084

Related videos on Youtube

alexey_p
Author by

alexey_p

Systems Administrator, Consultant, Programmer, Linux geek, Computer geek, Networking geek. I work for Net Direct, Canada's leading Linux solutions provider and largest Canadian IBM System x VAR. LinkedIn Profile Achievements Unlocked

Updated on July 13, 2020

Comments

  • alexey_p
    alexey_p almost 4 years

    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?

  • Josh.F
    Josh.F over 6 years
    call plt.addLegend() BEFORE thanks, i almost missed that :)