Matplotlibのデフォルトスタイルの軸の範囲を変更、余白削除
Posted: | Tags: Python, Matplotlib
Matplotlib v2.0からデフォルトのスタイルが変わった
Pythonのグラフ描画ライブラリMatplotlibのデフォルトスタイルがバージョン2.0で変更になった。
全体的にモダンな感じの見た目になって良かったのだが、軸の範囲が変わりグラフの上限・下限に余白ができるようになった。
v2.0
以降(現行)のデフォルトスタイル。
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('data/dst/matplotlib_style_default.png')
plt.show()
グラフの上限・下限に余白がある。
以前のスタイルはスタイルシートclassic
を適用する。
with plt.style.context('classic'):
plt.plot(x, y)
plt.savefig('data/dst/matplotlib_style_classic.png')
plt.show()
以前のスタイルでは、軸の上限・下限が整数値になるように切り上げられているが、整数値で収まる場合は余白はできないようになっていた。
なお、上の例では一時的にスタイルを適用するために、with
ブロックでplt.style.context('classic')
としている。これ以降のコードにも適用したい場合はwith
ブロック無しでplt.style.use('classic')
とすればよい。
余白がなくなるように軸の範囲を変更
現行のデフォルトスタイルでは、axes.xmargin
およびaxes.ymargin
の値がともに0.05に設定されており、5%分の余白ができるようになっている。この値を0にすると余白がなくなる。
# mpl.rcParams['axes.autolimit_mode'] = 'round_numbers'
mpl.rcParams['axes.xmargin'] = 0
mpl.rcParams['axes.ymargin'] = 0
plt.plot(x, y)
plt.savefig('data/dst/matplotlib_style_change_axes_margin.png')
plt.show()
以前のスタイルのように、軸の上限・下限が整数値になるように切り上げたい場合は、上記axes.autolimit_mode
の設定を有効化すればよい。
常にこの設定を適用したい場合は、Matplotlib設定保存用ディレクトリのmatplotlibrcに以下の内容を追加する。
# axes.autolimit_mode: round_numbers
axes.xmargin: 0
axes.ymargin: 0
Matplotlib設定保存用ディレクトリはメソッドget_configdir()
で確認できる。
import matplotlib as mpl
print(mpl.get_configdir())
Matplotlib設定保存用ディレクトリにmatplotlibrcという名前のファイルが存在しない場合は新規作成する。
matplotlibrcについての詳細は以下の記事も参照。