Объединение fig.legend с подфигурами в matplotlibPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объединение fig.legend с подфигурами в matplotlib

Сообщение Anonymous »

РЕДАКТИРОВАТЬ: это исправлено в последних версиях matplotlib здесь

Отказ от ответственности: Я знаю, что использование подфигур не имеет значения в этом простом примере, последний используется только для демонстрации моей проблемы: я хочу иметь возможность использовать fig.legend() с fig.subfigures1.
< hr />
В настоящее время я открываю для себя новый модуль подфигур в matplotlib. Я заметил, что легенды фигур, созданные с помощью fig.legend(), не отображаются, когда основная фигура содержит подфигуры:

Код: Выделить всё

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1, 10, 10)
y1 = x
y2 = -x

fig = plt.figure(constrained_layout=True)
subfigs = fig.subfigures(nrows=2, ncols=1)

for subfig in subfigs:
axarr = subfig.subplots(1, 2)
for ax in axarr.flatten():
l1, = ax.plot(x, y1, label='line1')
l2, = ax.plot(x, y2, label='line2')
#
ax.legend()
# subfig.legend(handles=[l1, l2], loc='upper center', ncol=2)
fig.legend(handles=[l1, l2], loc='upper center', ncol=2)
plt.savefig('subfigures_figlegend.png', dpi=200)
Изображение

Обратите внимание, что легенда к фигуре отсутствует. Для сравнения обратите внимание, что он отображается только при использовании plt.subplots:

Код: Выделить всё

fig, axarr = plt.subplots(2, 2, constrained_layout=True)
for ax in axarr.flatten():
l1, = ax.plot(x, y1, label='line1')
l2, = ax.plot(x, y2, label='line2')
#
ax.legend()
fig.legend(handles=[l1, l2], loc='upper center', ncol=2)
plt.savefig('subplots_figlegend.png', dpi=200)
Изображение


Подробнее здесь: https://stackoverflow.com/questions/703 ... matplotlib
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Legend Grouping не работает с Fig.Add_Shape
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Legend Grouping не работает с Fig.Add_Shape
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Hide legend labels with underscore in matplotlib>3.10
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Как правильно автоматизировать размещение fig.suptitle при отображении широких изображений с помощью imshow в matplotlib
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как сохранить скрипичные графики matplotlib с осями? Пробовал использовать fig.tight_layout(), но сохраненные графики бе
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»