Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 928
MikeyB Avatar asked May 22 '13 17:05

MikeyB


2 Answers

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.

like image 107
Tulkas Astaldo Avatar answered Sep 22 '22 09:09

Tulkas Astaldo


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")
like image 28
Luke Avatar answered Sep 18 '22 09:09

Luke