Matplotlib 罫線の設定#

※記事内に商品プロモーションを含むことがあります。

公開日

Matplotlibの罫線 (grid) の設定について解説します。

罫線の基本#

グラフに罫線を引くにはax.grid()メソッドを用います。 以下に簡単な例を示します。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.grid()
plt.show()
../_images/eaf684c9814c08301a864cc6cdaf2c615ea351af323a122fc2a31653e3eafb82.png

gridのオプション#

ax.gridメソッドの主なオプションは以下の通りです。

オプション

説明

axis

str

軸を選択('both', 'x', 'y')

which

str

罫線を引く目盛りを指定。'major'(主目盛り)、'minor'(補助目盛り)、'both'(両方の目盛り)

linewidth

float

罫線の太さ

color

str

罫線の色

linestyle

str

罫線の種類

visible

bool

Falseの場合、罫線を非表示

片方の軸のみ罫線を引く#

片方の軸のみ罫線を引く場合、Axes.gridメソッドのaxisオプションを使用します。 罫線を引く軸を"x"または"y"とします。 x軸のみ罫線を引く例を以下に示します。

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.grid(axis="x")
plt.show()
../_images/bc958c5697c4b1cec974776c9e8f2c645128fddadac07e9c88f4dedb316442f0.png

補助目盛りの罫線#

grid()メソッドのwhichオプションを指定しない場合、主目盛り線に対して罫線が引かれます。 補助目盛りにも罫線を引くには、ax.minorticks_on()で補助目盛りをONにした後、ax.grid(which="both")を実行します。

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.minorticks_on() # 補助目盛りを表示する
ax.grid() # デフォルトでは主目盛り線のみ罫線が引かれる
plt.show()

# 主目盛りと補助目盛りの両方に罫線を引く
fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.minorticks_on()
ax.grid(which="both")
plt.show()
../_images/878a04cde0be30a4c1a7c66aedd2e826fd2caf0c495ecda10954fa899d8de7ea.png ../_images/f1aec8d5cfca9068a80252c20210feddcccd1ff435534767b63550fa19717282.png

罫線の太さ・色・種類#

罫線の太さはlinewidthオプション、色はcolorオプション、種類はlinestyleオプションでそれぞれ変更できます。例を以下に示します。

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.grid(linewidth=1.5, color="green", linestyle="--")
plt.show()
../_images/4e1edb2ca8aa634a163bcb638003ad2bb10bfbdb159c20178954b77314e716f7.png

罫線を消す#

罫線を強制的に非表示にする場合、grid()メソッドのvisibleオプションをFalseにします。

例を以下に示します。 plt.style.use()では、Matplotlibのグラフのスタイルを変更できます。 "ggplot"というスタイルでは、以下のように罫線が白線で表示されます。

plt.style.use("ggplot")

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
plt.show()
../_images/478a55bec157aa6f4f6166ed880c0479c64aca609eca0e749c64643d25ca3d7a.png

これに対して、ax.grid(visible=False)とすると罫線を非表示にできます。

plt.style.use("ggplot")

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.grid(visible=False)
plt.show()
../_images/bf96a755fbfb1d1b3aca4f72811dc76b127699d684daca184e0f908451a2b3e6.png

参考サイト#