ホームページ >バックエンド開発 >Python チュートリアル >Matplotlib で拡大する凡例に合わせて図ボックスのサイズを動的に拡大する方法

Matplotlib で拡大する凡例に合わせて図ボックスのサイズを動的に拡大する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 12:51:30534ブラウズ

How to Expand Figure Box Size Dynamically to Accommodate an Expanding Legend in Matplotlib?

超過する凡例を収容するための図ボックスの拡張

問題の説明

Matplotlib の軸の外側に凡例を配置すると、凡例が軸を超えて拡張されることがあります。 Figure ボックスの境界線が切れてしまい、外観が途切れてしまいます。軸を縮小してサイズを変更することは、データの可視性を低下させるため、最適な解決策ではありません。

動的な Figure ボックスの拡張

望ましい解決策は、Figure ボックスのサイズを動的に拡張することです。拡張凡例を収容します。

実装: bbox_extra_artists を使用したカスタム savefig 呼び出し

これを実現するには、bbox_extra_artists 引数を含めるように savefig 関数呼び出しを調整できます:

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

これは、Figure ボックスのサイズを計算するときに、凡例 (lgd) などの追加のアーティストを考慮することを指定します。

例と結果

この変更された savefig 呼び出しの使用:

<code class="python">import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.set_title("Trigonometry")
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))
ax.grid('on')
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

凡例が軸を超えて拡張された図を生成しますが、展開された図ボックス内に収まります:

  Trigonometry

  2
  1
  0
 -1
 -2
 -4π  -2π     0     2π    4π
Inverse tan
Cosine
Sine

以上がMatplotlib で拡大する凡例に合わせて図ボックスのサイズを動的に拡大する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。