matplotlib legend: Including markers and lines from two different graphs in one line

legend, matplotlib, python

Solution

You just need to use `legend` a bit more directly. See Matplotlib - How to make the marker face color transparent without making the line transparent and user guide.

ax.legend([(p1, p3), (p2, p4)], ['set 1', 'set 2'])
plt.draw()

Problem

I've been doing some linear regression and want to plot the markers (original data) and the lines (regression) on the same line in the legend. For simplicity, here's a fake regression: ``` from pylab import * ax = subplot(1,1,1) p1, = ax.plot([1,2,3,4,5,6],'r-', label="line 1") p2, = ax.plot([6,5,4,3,2,1],'b-', label="line 2") p3, = ax.plot([1.2,1.8,3.1,4.1,4.8,5.9],'ro', label="dots 1") p4, = ax.plot([6.1,5.1,3.8,3.1,1.9,0.9],'bo', label="dots 2") ax.legend(loc='center right',numpoints=1) show() ``` So I want the legend to consist of 2 lines, each showing a line and a dot, instead of 4 lines. How can I do that?

Original source

Related problems