凡例の展開に合わせて Figure ボックスのサイズを変更する
Matplotlib で凡例を軸の外側に移動すると、凡例の位置が変更されるという問題が発生します。フィギュアボックスにより切れる場合がございます。この問題は、凡例がプロット領域の境界を越えて拡大されると発生します。従来、より大きな凡例に合わせて軸を調整することが推奨される解決策でしたが、データのサイズが小さくなり、解釈がより困難になる可能性があります。
図ボックスの動的サイズ変更
この問題に対処するために提案される解決策は、データ サイズを変更せずに、展開される凡例に合わせて Figure ボックスのサイズを動的に変更することです。この動作は R と LaTeX では観察されますが、Python ではすぐにはわかりませんでした。
Figure Box のサイズを動的に変更するコード
この動的なサイズ変更を実行するための推奨コードは次のとおりです。
<code class="python">fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>
このコードでは、lgd は凡例オブジェクトを表します。 bbox_extra_artists=(lgd,) を指定すると、savefig が凡例に合わせて Figure ボックスを動的に調整できるようになります。
複雑な凡例を使用した例
次の例は、複雑な凡例:
<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 パラメータは、凡例に合わせて Figure ボックスを調整し、凡例全体が表示されます。
注:
2019 年以降、動的なサイズ変更のコードは次のようになりました。簡略化された。現在は次のコマンドで十分です:
<code class="python">plt.savefig('x.png', bbox_inches='tight')</code>
以上がPython で展開する凡例に合わせて図ボックスのサイズを動的に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。