Matplotlib で Pyplot グリッドを表示する方法

  1. Matplotlib で通常のプロットを描く
  2. Matplotlib のプロットで grid() を使ってください
  3. Matplotlib でグリッド属性を変更する
  4. 縦線と横線のどちらかを描く

このチュートリアルでは、Python の Matplotlib でプロットの上にグリッドを描画する方法を説明します。これを実現するために、grid() 関数を使用します。また、グリッドの色や形をカスタマイズしたり、縦線と横線のどちらかだけを描画するために、grid() 関数の引数を使う方法も示します。

Matplotlib で通常のプロットを描く

まず、x と y の値を表す 2つのリストを作成し、それらを使ってプロットを描画してみましょう。関数 plot() を呼び出し、x と y のリストを引数に渡してから、関数 show() を呼び出します。

title()xlabelylabel() 関数を使用して、プロットにタイトルやラベルを追加してわかりやすくします。

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 でのグリッドなしの通常のプロット

しかし、普通のプロットでは退屈で何かが欠けているように見えます。そこで、プロットにグリッドを追加する必要があります。

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 での単純なグリッド

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()

出力:

Matplotlib のグリッド属性

線幅は 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()

出力:

Matplotlib における X 軸 Y 軸グリッド

comments powered by Disqus