如何在 Python 中動態調整圖形框大小以適應擴充圖例?

Linda Hamilton
發布: 2024-10-18 12:52:03
原創
148 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!