Dear all, Please find below few lines of code showing the workaround I use to have the legend of all the curves from a multiple axes plot. I would like to merge all legends in one frame only. This can be done using *legend.addItem()* also for the curve created via PlotItem (the 1st one), however, the following error is raised: opts = self.item.opts AttributeError: 'PlotItem' object has no attribute 'opts'
This issue was reported here, https://groups.google.com/forum/#!topic/pyqtgraph/1PrA5VS4sy8 with Luke mentioning: ...legend.addItem() requires a PlotCurveItem or PlotDataItem... which is not the case for the 1st curve. Please let me know if there a way to combine all legends together. Regards, Joao Saraiva *# -*- coding: utf-8 -*-import pyqtgraph as pgfrom pyqtgraph.Qt import QtCore, QtGuiapp = QtGui.QApplication([])pw = pg.GraphicsView()l = pg.GraphicsLayout()pw.setCentralItem(l)pw.show()plt1 = pg.PlotItem(title="MultipleAxePlotWithLegend")l.addItem(plt1)plt1.addLegend()plt1.plot([1,2,4,8,16,32], pen='g', name='legend from PlotItem')plt1.setLabels(left='axis 1', bottom='time')legend = pg.LegendItem(offset=(-30,30))plt2 = pg.ViewBox()legend.setParentItem(plt2)plt1.showAxis('right')plt1.scene().addItem(plt2)plt1.getAxis('right').linkToView(plt2)plt2.setXLink(plt1)a=pg.PlotDataItem([1,5,11,15], symbol='t')plt2.addItem(a)legend.addItem(a,"legend from viewBox2")plt3 = pg.ViewBox()legend.setParentItem(plt3)ax3 = pg.AxisItem('right')plt1.layout.addItem(ax3, 2, 3)plt1.scene().addItem(plt3)ax3.linkToView(plt3)plt3.setXLink(plt1)b=pg.PlotCurveItem([11,25,26], pen='r')plt3.addItem(b)legend.addItem(b,"legend from viewBox3")def updateViews(): global plt1, plt2, plt3 plt2.setGeometry(plt1.vb.sceneBoundingRect()) plt2.linkedViewChanged(plt1.vb, plt2.XAxis) plt3.setGeometry(plt1.vb.sceneBoundingRect()) plt3.linkedViewChanged(plt1.vb, plt3.XAxis)updateViews()plt1.vb.sigResized.connect(updateViews)if __name__ == '__main__': import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtGui.QApplication.instance().exec_()* -- You received this message because you are subscribed to the Google Groups "pyqtgraph" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pyqtgraph/bee0f541-dc5c-45f0-b6c7-4c2e9069405e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
