Легенда теряет второго художника, когда я перехожу за пределы сюжета - PullRequest
0 голосов
/ 23 мая 2018

Когда я добавляю второй ряд данных к своему графику (со вторичной осью Y) и пытаюсь переместить легенду, я теряю ссылку на второй ряд.Это работает, если я не пытаюсь переместить расположение легенды, но оптимально я бы хотел разместить легенду за пределами сюжета.Есть ли быстрое исправление для этого?

В легенде есть обе метки серий:

import pandas as pd
import numpy as np

x = np.arange(0,100,1)
y1 = x
y2 = x**2

tempDF = pd.DataFrame({'y1': y1, 'y2': y2}, index=x)

ax = tempDF.plot(y='y1')
tempDF.plot(y='y2', ax=ax, secondary_y=True)

Поведение по умолчанию

Когда я добавляюследующий код для перемещения легенды Я теряю метку второй серии:

ax.legend(loc=(1.15,.9))

Легенда теряет вторую серию

Есть ли легкое исправление?

1 Ответ

0 голосов
/ 23 мая 2018

Прежде всего, вы, конечно, можете добавить легенду для каждой оси,

ax = tempDF.plot(y='y1')
ax2 = tempDF.plot(y='y2', ax=ax, secondary_y=True)

ax.legend(loc=(0.9,.9))
ax2.legend(loc=(0.9,.8))

Чтобы они были внутри одной и той же легенды, вы можете создать легенду из соответствующих маркеров и меток легенды,

ax = tempDF.plot(y='y1')
ax2 = tempDF.plot(y='y2', ax=ax, secondary_y=True)

h1, l1 = ax.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax.legend(h1+h2, l1+l2, loc=(0.9,.9))

Альтернативой является использование легенды фигур.

ax = tempDF.plot(y='y1')
tempDF.plot(y='y2', ax=ax, secondary_y=True)

ax.figure.legend(loc=(0.9,.9))

Обратите внимание, что эта легенда фигур может работать только в более новых версиях matplotlib.Также обратите внимание, что координаты loc теперь являются координатами фигур вместо координат осей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...