「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python で展開する凡例に合わせて図ボックスのサイズを動的に変更する方法

Python で展開する凡例に合わせて図ボックスのサイズを動的に変更する方法

2024 年 11 月 2 日に公開
ブラウズ:678

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

凡例の展開に合わせて図ボックスのサイズを変更する

Matplotlib で凡例を軸の外側に移動すると、凡例の位置が変更されるという問題が発生します。フィギュアボックスにより切れる場合がございます。この問題は、凡例がプロット領域の境界を越えて拡大されると発生します。従来、より大きな凡例に合わせて軸を調整することが推奨される解決策でしたが、データのサイズが小さくなり、解釈がより困難になる可能性があります。

図ボックスの動的サイズ変更

この問題に対処するために提案される解決策は、データ サイズを変更せずに、展開される凡例に合わせて Figure ボックスのサイズを動的に変更することです。この動作は R と LaTeX では観察されますが、Python ではすぐにはわかりませんでした。

図ボックスのサイズを動的に変更するコード

この動的なサイズ変更を実行するための推奨コードは次のとおりです。以下:

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

このコードでは、lgd は凡例オブジェクトを表します。 bbox_extra_artists=(lgd,) を指定すると、savefig が凡例に合わせて Figure ボックスを動的に調整できるようになります。

複雑な凡例を使用した例

次の例は、複雑な凡例:

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 パラメータは、凡例に合わせて Figure ボックスを調整し、凡例全体が表示されます。

注:

2019 年以降、動的なサイズ変更のコードは次のようになりました。簡略化された。現在は次のコマンドで十分です:

plt.savefig('x.png', bbox_inches='tight')
リリースステートメント この記事は次の場所に転載されています: 1729223538 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3