Вы можете легко получить то, что хотите, добавив строку в топоре:
ax.plot(0, 0, '-r', label = 'temp')
или
ax.plot(np.nan, '-r', label = 'temp')
Это ничего не изменит, кроме добавления метки к легенде об топоре.
Я думаю, что это намного проще.
Нет необходимости автоматически отслеживать линии, когда у вас есть только несколько линий на вторых осях, так как ручная фиксация, как описано выше, будет довольно простой. Во всяком случае, это зависит от того, что вам нужно.
Весь код как показано ниже:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')
time = np.arange(22.)
temp = 20*np.random.rand(22)
Swdown = 10*np.random.randn(22)+40
Rn = 40*np.random.rand(22)
fig = plt.figure()
ax = fig.add_subplot(111)
ax2 = ax.twinx()
#---------- look at below -----------
ax.plot(time, Swdown, '-', label = 'Swdown')
ax.plot(time, Rn, '-', label = 'Rn')
ax2.plot(time, temp, '-r') # The true line in ax2
ax.plot(np.nan, '-r', label = 'temp') # Make an agent in ax
ax.legend(loc=0)
#---------------done-----------------
ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.show()
Сюжет как ниже:
Обновление: добавить лучшую версию:
ax.plot(np.nan, '-r', label = 'temp')
Это ничего не даст, пока plot(0, 0)
может изменить диапазон оси.