Я использую встроенную функцию plot () в pandas, чтобы сгенерировать график с двумя осями Y. Это работает хорошо, и легенда даже указывает на (правую) ось Y для второго набора данных. Но имхо положение легенды плохое.
Однако, когда я обновляю положение легенды, я получаю две легенды: правильную ('A', 'B (справа)') в неудобном месте и неправильную. (Только 'A') в выбранном месте.
Итак, теперь я хочу создать легенду самостоятельно и искал вторую <matplotlib.lines.Line2D>
, но она не содержится в среде топора.
import pandas as pd
df = pd.DataFrame({"A":[1,2,3],"B":[1/4,1/5,1/6]})
ax = df.plot(secondary_y=['B'])
len(ax.lines)
>>> 1
Моя конечная цель - иметь возможность перемещать правильную легенду, но я уверен, что мог бы вручную разместить легенду, если бы только у меня был доступ к контейнеру второй строки.
Если Я собирался подавить оригинальную легенду, вызвав df.plot(...,legend=None)
и сделать что-то вроде plt.legend([ax.lines[0],ax.lines[1]],['A','B (right)'],loc='center left',bbox_to_anchor=(1.2, 0.5))
. Но ax
хранит только первую строку «A», где вторая?
Также ax.get_legend_handles_labels()
содержит только ([<matplotlib.lines.Line2D at 0x2630e2193c8>], ['A'])
.