pyqtgraph: add legend for lines in a plot
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")
Related videos on Youtube
![alexey_p](https://lh4.googleusercontent.com/-zqIyjOOecao/AAAAAAAAAAI/AAAAAAAAAv4/QLqiX-BzjTk/photo.jpg?sz=256)
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, 2020Comments
-
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:
How do I add an appropriate legend item?
-
Josh.F over 6 yearscall
plt.addLegend()
BEFORE thanks, i almost missed that :)