«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как динамически изменить размер поля рисунка, чтобы оно соответствовало расширяющейся легенде в Python?

Как динамически изменить размер поля рисунка, чтобы оно соответствовало расширяющейся легенде в Python?

Опубликовано 2 ноября 2024 г.
Просматривать:744

How to Dynamically Resize Figure Box to Fit Expanding Legend in Python?

Изменение размера рамки рисунка для размещения расширяющейся легенды

При перемещении легенды за пределы оси в Matplotlib возникает проблема, когда легенда может быть отрезан фигурной коробкой. Эта проблема возникает, когда легенда выходит за пределы области графика. Традиционно рекомендуемым решением было изменение оси для размещения более крупной легенды, но это может привести к уменьшению размера данных, что затруднит их интерпретацию.

Динамическое изменение размера рамки рисунка

Чтобы решить эту проблему, предлагаемое решение состоит в том, чтобы динамически изменять размер поля рисунка, чтобы разместить расширяющуюся легенду без изменения размера данных. Такое поведение наблюдается в R и LaTeX, но не было сразу заметно в Python.

Код для динамического изменения размера фигуры

Предлагаемый код для выполнения этого динамического изменения размера выглядит следующим образом: следует:

fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')

В этом коде lgd представляет объект легенды. Указав bbox_extra_artists=(lgd,), мы разрешаем savefig динамически корректировать рамку рисунка в соответствии с легендой.

Пример со сложной легендой

Вот пример с сложная легенда:

import matplotlib.pyplot as plt
import numpy as np

# Create figure and subplot
fig = plt.figure(1)
ax = fig.add_subplot(111)

# Plot data and create legend
ax.plot(x, np.sin(x), label='Sine')
ax.plot(x, np.cos(x), label='Cosine')
ax.plot(x, np.arctan(x), label='Inverse tan')
lgd = ax.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1))

# Add arbitrary text for testing
text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes)

# Set title and grid
ax.set_title("Trigonometry")
ax.grid('on')

# Save figure with dynamic resizing
fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')

Этот код создает график со сложной легендой, выходящей за пределы области оси. Параметр bbox_extra_artists настраивает рамку фигуры для размещения легенды, в результате чего отображается вся легенда.

Примечание:

С 2019 года код динамического изменения размера стал упрощенный. Теперь достаточно следующей команды:

plt.savefig('x.png', bbox_inches='tight')
Заявление о выпуске Эта статья перепечатана по адресу: 1729223538. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3