Matplotlib 罫線の設定#

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

公開日

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

罫線の基本#

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

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.grid()
plt.show()
../_images/a8cf7081da8221d2b7f1ff8d7aeb5d08c81693d08e7f91ec83139370ca5da1fc.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/1944b0d1073bb4e2d32667d83b09e18048147c823afef4b58bb810e4e4216d3c.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/5720131ee4c3d2d524d02e1284024d554bf57ca11ca484341331052b3e6f0eb3.png ../_images/5b98b222fadef450f5db18522f6346f5e2bff164d90ccd19bca59414c53ac9e1.png

罫線の太さ・色・種類#

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

fig, ax = plt.subplots()
ax.plot([1, 3, 2])
ax.grid(linewidth=1.5, color="green", linestyle="--")
plt.show()
../_images/3b49ab4237ccdc5ecc28bc220ba4b40721e71c43ad54090d408effe2a9dee1f8.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/06c834c41893cd54ee95a84b357243dd8bfd1d828e374e67ba827ea7f964b4e8.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/1ae6382c1973bfc34862cca5210da7ed5a531e2a9c017ea3b254f4d2c0e17187.png

参考サイト#