Existe uma solução direta sem mexer com matplotlib: apenas pandas.
Ajustando o exemplo original:
table = sql.read_frame(query,connection)
ax = table[0].plot(color=colors[0],ylim=(0,100))
ax2 = table[1].plot(secondary_y=True,color=colors[1], ax=ax)
ax.set_ylabel('Left axes label')
ax2.set_ylabel('Right axes label')
Basicamente, quando a secondary_y=True
opção é fornecida (embora também ax=ax
seja passada), pandas.plot
retorna um eixo diferente que usamos para definir os rótulos.
Sei que isso foi respondido há muito tempo, mas acho que vale a pena essa abordagem.