Leyenda única para ejes múltiples

Tengo el siguiente código de ejemplo:

fig1.suptitle('Test') ax1 = fig1.add_subplot(221) ax1.plot(x,y1,color='b',label='aVal') ax2 = ax1.twinx() ax2.plot(x,y2,color='g',label='bVal') ax2.grid( ls='--', color='black') legend([ax1,ax2], loc=2) 

La ttwig secundaria tiene dos ejes con diferentes escalas en la misma ttwig secundaria y quiero solo una leyenda para ambos ejes. Probé el código anterior y no funciona y solo produce detalles de ax2. ¿Algunas ideas?

¡Pensé que era una solución que funciona! ¿Hay una manera mejor que esta?

 fig1.suptitle('Test') ax1 = fig1.add_subplot(221) ax1.plot(x,y1,color='b',label='aVal') ax2 = ax1.twinx() ax2.plot(x,y2,color='g',label='bVal') ax2.grid( ls='--', color='black') h1, l1 = ax1.get_legend_handles_labels() h2, l2 = ax2.get_legend_handles_labels() ax1.legend(h1+h2, l1+l2, loc=2) 

De hecho, esta es una publicación antigua, pero creo que encontré una manera más fácil que permite un mayor control.

Aquí está (matplotlib. Versión ‘1.5.3’) en python3.5:

 import matplotlib.pyplot as plt fig, ax1 = plt.subplots() plt.suptitle('Test') ax2 = ax1.twinx() a, = ax1.plot([1, 2, 3], [4, 5, 6], color= 'blue', label= 'plt1') b, = ax2.plot([7, 8, 9],[10, 11, 12], color= 'green', label= 'plt2') p = [a, b] ax1.legend(p, [p_.get_label() for p_ in p], loc= 'upper center', fontsize= 'small') 

espectáculo()