サブプロットを追加した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
も使用できます。
編集:
私が答えたので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()