Дополнительные записи игнорируются в легенде оси - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь воспроизвести некоторые сюжеты из этого видео с современными данными и наложением точек на линии для мер, принятых правительствами. Использование pandas для данных и для вызова команд построения.

w У меня нет проблем с построением линий и соответствующих легенд. Затем я добавляю наложенные точки, для которых я определил эти свойства:

point_opts = lambda marker, color: {'label': '', 'color': 'w', 'marker': marker, 'markeredgecolor': color, 'markeredgewidth': 3, 'linestyle': None}

Я бы хотел добавить их в легенду только один раз, а не один раз для каждой страны, отсюда и пустой ярлык.

Затем я пытаюсь изменить легенду следующим образом:

handles, labels = ax.get_legend_handles_labels()

for props in ({**point_opts(marker, 'black'), 'label': measure} for measure, marker in points.items()):
    handles.append(matplotlib.lines.Line2D([], [], **props))
    labels.append(props['label'])

ax.legend(handles=handles, labels=labels)

Однако это не меняет условные обозначения оси (и сообщения об ошибках не отображаются). Однако значения кажутся правильными. Например, если я добавлю второй график, на рисунке:

fig.legend(handles=handles, labels=labels, loc='center left')

, я получу результат ниже.

Figure with 2 plots

Почему это происходит? Как я могу на самом деле изменить мою ось графика? Использование python 3.7.3 и matplotlib 3.1.3 в OpenSuse x64, если это имеет какое-либо значение.

1 Ответ

0 голосов
/ 31 марта 2020

Тьфу хорошо, я нашел это… Где-то позже я перемещал легенду с помощью:

ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

Очевидно, что это сбрасывает содержание легенды к любому положенному там графику, стирая Энди вручную. дополнения.

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