Reputation: 159
I have a figure that overlays a plot of a pdf and two "step" histograms. The legend shows a line and two rectangles. Is there any way to change the legend handlers for the two histograms to also display lines? Some sample code is:
x = np.linspace(0,2.5,1000)
plt.xlim((0,2.5))
plt.ylim((0,2.5))
plt.plot(x,rv.pdf(x),'k-.',label='pdf')
hist(series1,125,color='k',normed=1,histtype='step',label='hist 1',linestyle='dashed')
hist(series2,125,color='k',normed=1,histtype='step',label='hist 2')
plt.legend(loc='best')
rv is a scipy.stats random variable.
Upvotes: 0
Views: 759
Reputation: 13610
You can draw lines with the same formatting as the histograms and use those to create a legend:
p1, = plt.plot(rv,'k-.',label='pdf')
plt.hist(series1,125,color='k',normed=1,histtype='step',label='hist 1',linestyle='dashed')
plt.hist(series2,125,color='k',normed=1,histtype='step',label='hist 2')
# plot lines that have the same formating as the histograms
p2, = plt.plot([0,0], label='hist 1',linestyle='dashed')
p3, = plt.plot([0,0],label='hist 2')
# create the legend
plt.legend([p1, p2, p3], ['pdf', 'hist 1', 'hist2'], loc='best')
# make the lines used in the legend invisible.
p2.set_visible(False)
p3.set_visible(False)
Upvotes: 2