切り取られたラベルや重なり合ったラベルのパディングを調整する方法 質問する

切り取られたラベルや重なり合ったラベルのパディングを調整する方法 質問する

サブプロットを追加したMREの更新

  • 元の質問と MRE の有用性についてはよくわかりません。余白のパディングは、大きな x ラベルと y ラベルに合わせて適切に調整されているようです。
  • この問題はサブプロットでも再現可能です。
  • 使用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私は、かなり「高い」xlabel (分数を含む TeX でレンダリングされた数式であるため、高さが数行のテキストに相当します) を使用してデータセットをプロットしています。

いずれにせよ、図を描くと、数式の下部が常に切り取られます。図のサイズを変更してもこの問題が解決しないようで、x 軸を「上」に移動して 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で実行しています。

ベストアンサー1

使用:

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も使用できます。

編集:

私が答えたのでmatplotlibplt.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()

ここに画像の説明を入力してください

おすすめ記事