add a fill_between to the legend in python

7.1k views Asked by At

I am trying to add my fill_between to the legend but it doesn't work? Why is it different than other plots? Here is the graph I have now:

enter image description here

plt.scatter(stageheight,discharge,color='b',label='measured data')
plt.plot(stageheight_hecras,discharge_hecras,'y^',label='modeled with HEC-RAS')
plt.plot(stageheight_masked,discharge_predicted,'r-',label='regression line measured data')
plt.plot(stageheight_hecras,discharge_predicted_hecras,'g-',label='regression line HEC-RAS')
plt.plot(stageheight_masked,upper,'r--',label='15% error measured data')
plt.plot(stageheight_masked,lower,'r--')
plt.plot(stageheight_hecras,upper_hecras,'g--',label='30% error HEC-RAS')
plt.plot(stageheight_hecras,lower_hecras,'g--')
plt.fill_between(stageheight_masked,upper,lower,facecolor='red',edgecolor='red',alpha=0.5,label='test')
plt.fill_between(stageheight_hecras,upper_hecras,lower_hecras,facecolor='green',alpha=0.5)
plt.axhline(y=0.6,xmin=0,xmax=1,color='black',linewidth = 4.0,label='measuring  range')
plt.text(0.02,0.7,'measured rating curve $Q = 1.37H^2 + 0.34H - 0.007$\nmodeled ratign curve $Q = 1.14H^2 - 0.51H + 0.07$',bbox=dict(facecolor='none',edgecolor='black',boxstyle='square'))
plt.title('Rating curve Catsop')
plt.ylabel('discharge$[m^3/s]$')
plt.ylim(0,2.5)
plt.xlim(0,1.2)
plt.xlabel('stageheight$[m]$')
plt.legend(loc='upper left', title='Legend')
plt.grid(True)
plt.show()
1

There are 1 answers

4
tmdavison On

what version of matplotlib are you using?

This should work if you upgrade to v1.5.0 or later. See here for more details: https://github.com/matplotlib/matplotlib/pull/3303#event-182205203