>  기사  >  백엔드 개발  >  Python에서 확장 범례에 맞게 그림 상자의 크기를 동적으로 조정하는 방법은 무엇입니까?

Python에서 확장 범례에 맞게 그림 상자의 크기를 동적으로 조정하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-18 12:52:03141검색

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

확장 범례를 수용하기 위해 그림 상자 크기 조정

Matplotlib에서 범례를 축 밖으로 이동할 때 범례가 발생하는 문제가 발생합니다. 그림 상자에 의해 잘릴 수 있습니다. 이 문제는 범례가 그림 영역의 경계를 넘어 확장될 때 발생합니다. 전통적으로 더 큰 범례를 수용하기 위해 축을 조정하는 것이 권장되는 솔루션이었지만, 이로 인해 데이터 크기가 줄어들어 해석이 더 어려워질 수 있습니다.

그림 상자의 동적 크기 조정

이 문제를 해결하기 위해 제안된 솔루션은 데이터 크기를 변경하지 않고 확장 범례를 수용할 수 있도록 그림 상자의 크기를 동적으로 조정하는 것입니다. 이 동작은 R 및 LaTeX에서 관찰되지만 Python에서는 즉시 나타나지 않습니다.

그림 상자의 크기를 동적으로 조정하는 코드

이 동적 크기 조정을 수행하기 위해 제안되는 코드는 다음과 같습니다. 다음은 다음과 같습니다.

<code class="python">fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

이 코드에서 lgd는 범례 개체를 나타냅니다. bbox_extra_artists=(lgd,)를 지정하면 savefig가 범례에 맞게 그림 상자를 동적으로 조정할 수 있습니다.

복잡한 범례의 예

다음은 다음의 예입니다. 복잡한 범례:

<code class="python">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')</code>

이 코드는 축 영역을 넘어 확장되는 복잡한 범례가 있는 플롯을 생성합니다. bbox_extra_artists 매개변수는 범례를 수용하도록 그림 상자를 조정하여 전체 범례가 표시되도록 합니다.

참고:

2019년부터 동적 크기 조정을 위한 코드는 다음과 같습니다. 쉽게 한. 이제 다음 명령으로 충분합니다:

<code class="python">plt.savefig('x.png', bbox_inches='tight')</code>

위 내용은 Python에서 확장 범례에 맞게 그림 상자의 크기를 동적으로 조정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.