1. ホーム
  2. python

[解決済み] カットオフまたはオーバーラップするラベルでパディングを調整する方法

2022-03-22 11:21:40

質問

サブプロット付きMREを更新しました

  • 元の質問とMREの有用性がよくわからないのですが。x,yラベルが大きい場合、margin paddingがきちんと調整されているようです。
  • この問題はサブプロットで再現可能です。
  • 使用方法 matplotlib 3.4.2
fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(8, 6))
axes = axes.flatten()

for ax in axes:
    ax.set_ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
    ax.set_xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')

plt.show()

オリジナル

を使用してデータセットをプロットしています。 matplotlib ここで、かなり "tall" な xlabel があります (これは TeX で表示される数式で、分数を含むため、数行のテキストに相当する高さがあります)。

いずれにせよ、図を描くと必ず数式の下が切れてしまいます。 図形のサイズを変えても解決しないようですし、x軸を"up"してxlabelのスペースを確保する方法がわかりません。 そのようなものは合理的な一時的解決策ですが、ラベルが切り取られていることを matplotlib に自動的に認識させ、それに応じてサイズを変更させる方法があるといいなと思います。

以下はその例です。

import matplotlib.pyplot as plt

plt.figure()
plt.ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
plt.xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$', fontsize=50)
plt.title('Example with matplotlib 3.4.2\nMRE no longer an issue')
plt.show()

ylabel全体は表示されているが、xlabelは下部で切れている。

この問題がマシン固有の問題である場合、私はこれを OSX 10.6.8 と matplotlib 1.0.0 で動かしています。

解決方法は?

使用する。

import matplotlib.pyplot as plt

plt.gcf().subplots_adjust(bottom=0.15)

# alternate option without .gcf
plt.subplots_adjust(bottom=0.15)

というラベルのためのスペースを確保するために plt.gcf() とは 現在の数値を取得する . plt.gca() を取得し、現在の Axes を使用することもできます。

編集する

答えを出したので。 matplotlib が追加されました。 plt.tight_layout() 関数を使用します。

matplotlibチュートリアル参照。タイトなレイアウトガイド

だから、それを使うことをお勧めします。

fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(8, 6))
axes = axes.flatten()

for ax in axes:
    ax.set_ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
    ax.set_xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')

plt.tight_layout()
plt.show()