Matplotlib で Pyplot グリッドを表示する方法
このチュートリアルでは、Python の Matplotlib でプロットの上にグリッドを描画する方法を説明します。これを実現するために、grid()
関数を使用します。また、グリッドの色や形をカスタマイズしたり、縦線と横線のどちらかだけを描画するために、grid()
関数の引数を使用する方法も示します。
Matplotlib で通常のプロットを描く
まず、x と y の値を表す 2つのリストを作成し、それらを使ってプロットを描画してみましょう。関数 plot()
を呼び出し、x と y のリストを引数に渡してから、関数 show()
を呼び出します。
title()
、xlabel
、ylabel()
関数を使用して、プロットにタイトルやラベルを追加してわかりやすくします。
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
plt.title("MyPlot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.plot(x, y)
plt.show()
出力:
しかし、普通のプロットでは退屈で何かが欠けているように見えます。そこで、プロットにグリッドを追加する必要があります。
Matplotlib のプロットで grid()
を使ってください
プロットの上にグリッドを描画するには、Matplotlib grid()
関数を使用します。
show()
の前に grid()
関数を呼び出す必要がありますが、これは前のプロットの上にグリッドを描画します。
以下のコードを参照してください。
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
plt.title("MyPlot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.plot(x, y)
plt.grid()
plt.show()
出力:
Matplotlib でグリッド属性を変更する
関数 grid()
は、グリッドの色やスタイルをカスタマイズするための引数を受け付けます。以下のように grid()
を呼び出すと、赤、点線、細線のグリッドが得られます。
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
plt.title("MyPlot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.plot(x, y)
plt.grid(color="r", linestyle="dotted", linewidth=1)
plt.show()
出力:
線幅は float
データ型で、ここでは利用可能なすべてのカラーコードと線幅を示しています。
有効なカラーコード
コード | 色 |
---|---|
b |
蒼い |
g |
青々 |
r |
あか |
c |
シアン |
m |
マゼンタ |
y |
黄色い |
k |
黒 |
w |
白 |
有効な行スタイル。
-
--
-.
:
None
- ``
solid
dashed
dashdot
dotted
縦線と横線のどちらかを描く
関数 grid()
のデフォルトでは、水平軸と垂直軸の両方を描画するようになっていますが、これもカスタマイズしたい場合があります。これには axis 引数を使用することができます。縦軸のみを描画する場合は axis='x'
、横軸のみを描画する場合は axis='y'
、両方を描画する場合は axis='both'
を指定して grid()
を呼び出してください。
以下のコードとその出力を参照してください。
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
_, (a, b, c) = plt.subplots(1, 3)
a.grid(axis="y", linestyle="dotted", color="b")
a.plot(x, y)
a.set_title("axis='y'")
b.grid(axis="x", linestyle="dotted", color="b")
b.plot(x, y)
b.set_title("axis='x'")
c.grid(axis="both", linestyle="dotted", color="b")
c.plot(x, y)
c.set_title("axis='both'")
plt.show()
出力: