pythonのグラフ描画ライブラリである「matplotlib」において、グラフの軸に関する要素の設定方法を紹介します。
本記事では、以下の内容を紹介します。
この記事で分かること
- 【補足】matplotlibの2つのグラフ作成方法(plot、axの違い)
- 軸ラベルを表示する方法
- 軸の範囲の指定方法
- 軸の目盛の指定方法
- 軸に補助目盛を表示する方法
- 軸に目盛線(グリッド)を表示する方法
本記事で紹介している、軸関連の設定の一覧は、下図のとおりです。
以下、軸関連の設定方法について、順番に紹介していきます。
スポンサーリンク
【参考】matplotlibの2つのグラフ作成方法について(plt、axの違い)
グラフの軸まわりの設定を紹介する前に、matplotlibのグラフ作成方法の違いについて紹介します。
matplotlibでは、2通りの方法でグラフを作成できます。
【 pyplot.~~~ 】
pyplotモジュールは「 import matplotlib.pyplot as plt 」 の形でimportされることが多いので、コード中では、 " plt.~~~ "として記載されることが多いです。
matplotlibのもとになった、MATLABに似たグラフ作成スタイルです。
plt.~~~ だけでいろいろできてしまうため、簡単にグラフを作成できます。
ただし、細かい調整はできないので、簡素なグラフでよい場合や、結果を早く確認したい場合などに向いています。
以下、plt.plot( )でグラフを作成するサンプルコードです。
### plt.plot()でグラフを作成
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
表示されるグラフはこちらになります。
【 ax.~~~ 】
オブジェクト指向でグラフを作成する方法です。
グラフ描画領域、個別の座標軸をオブジェクトとして作成し、グラフを作成・調整していきます。
グラフ描画領域(Figure)、個別の座標軸(Axes)は階層構造になっています。
fig, ax = plt.subplots( ) などで、Figureオブジェクト、Axesオブジェクトを作成し、個別のAxesオブジェクトに対してax.plot( )などでグラフを描画します。
オブジェクト指向によるグラフ作成の方が、細かい調整ができるので、こちらの方法に慣れることをおすすめします。
以下、オブジェクト指向でグラフを作成するサンプルコードです。
### オブジェクト指向でグラフを作成
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
表示されるグラフは、plt.plot( )と同じです。
ここからは、matplotlibの "グラフの軸" 関連の設定方法について紹介します。
前述のとおり、matplotlibでは2通りのグラフ作成方法があるので、サンプルコードも「pyplot.~~~」、「ax.~~~」の2通りを紹介します。
それぞれの方法で微妙に関数名が違うので慣れないうちは混乱する方もいるかと思いますが、
基本的には「pyplot.~~~」の関数に、 "set_" を付けると、「ax.~~~」で使える関数名になります。
【例】
plt.xlabel('X')
ax.set_xlabel('X')
スポンサーリンク
matplotlibで軸ラベルを表示する方法
はじめに、グラフに軸ラベルを表示する方法を紹介します。
【 pyplot.~~~ 】
plt.xlabel( 文字列 ) とすることで、X軸の軸ラベルを表示できます。
plt.ylabel( 文字列 ) とすることで、Y軸の軸ラベルを表示できます。
### グラフに軸ラベルを表示する方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
【 ax.~~~ 】
ax.set_xlabel( 文字列 ) とすることで、X軸の軸ラベルを表示できます。
ax.set_ylabel( 文字列 ) とすることで、Y軸の軸ラベルを表示できます。
### グラフに軸ラベルを表示する方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()
コードを実行すると、以下のグラフが表示されます。
【補足】軸ラベルの調整
補足として、ラベルのサイズや色を変更する方法を紹介します。
オブジェクト指向でグラフを作成する場合を例に紹介します。
【 ax.~~~ 】
### グラフのラベルの調整
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X', labelpad = 20, weight ='bold', size = 18, color ='b')
ax.set_ylabel('Y', labelpad = 20, weight ='bold', size = 18, color ='b')
plt.show()
コードを実行すると、以下のグラフが表示されます。
matplotlibで軸の範囲の指定方法
グラフの軸の範囲を変更する方法を紹介します。
【 pyplot.~~~ 】
plt.xlim( 数値, 数値 ) とすることで、X軸の範囲を指定できます。
plt.ylim( 数値, 数値 ) とすることで、Y軸の範囲を指定できます。
### グラフの軸範囲の調整
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlim(0, np.pi * 2)
plt.ylim(-1, 1)
plt.show()
【 ax.~~~ 】
ax.set_xlim( 数値, 数値 ) とすることで、X軸の範囲を指定できます。
ax.set_ylim( 数値, 数値 ) とすることで、Y軸の範囲を指定できます。
### グラフの軸範囲の調整
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(0, np.pi * 2)
ax.set_ylim(-1, 1)
plt.show()
コードを実行すると、以下のグラフが表示されます。
軸の範囲を 0 ~ 2π までの1周期分に変更しています。
スポンサーリンク
matplotlibで軸の目盛の指定方法
グラフの軸の目盛を指定する方法を紹介します。
【 pyplot.~~~ 】
plt.xticks( [数値, 数値, ・・・] ) とすることで、X軸の目盛を指定できます。
plt.yticks( [数値, 数値, ・・・] ) とすることで、Y軸の目盛を指定できます。
### 軸の目盛の指定方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xticks([0, np.pi, np.pi*2, np.pi*3, np.pi*4])
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.show()
【 ax.~~~ 】
ax.set_xticks( [数値, 数値, ・・・] ) とすることで、X軸の目盛を指定できます。
ax.set_yticks( [数値, 数値, ・・・] ) とすることで、Y軸の目盛を指定できます。
### 軸の目盛の指定方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticks([0, np.pi, np.pi*2, np.pi*3, np.pi*4])
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
plt.show()
コードを実行すると、以下のグラフが表示されます。
x軸は π刻み、y軸は0.5刻みで目盛を指定しています。
軸の目盛の間隔を指定する方法
前述の例では、軸の目盛を数値のリストとして指定しました。
これを目盛の値ごとに手打ちするのは大変なので、numpyを用いて目盛を指定する方法を紹介します。
np.arange(開始, 終了, 間隔) とすることで、等間隔の数値のリストが作成できます。
【 pyplot.~~~ 】
### 軸の目盛の間隔を指定
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xticks(np.arange(0, np.pi*5, np.pi*2))
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.show()
【 ax.~~~ 】
### 軸の目盛の間隔を指定
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticks(np.arange(0, np.pi*5, np.pi*2))
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
plt.show()
コードを実行すると、以下のグラフが表示されます。
0 ~ 4π まで、2π刻みで、軸の目盛を表示できました。
軸の目盛と文字列を指定する方法
特に、目盛を π で表示する場合など、 数値のままだと分かりにくい場合がありますので、目盛を文字列で表示する方法を紹介します。
【 pyplot.~~~ 】
plt.xticks([数値, 数値, ・・・], [文字列, 文字列, ・・・]) とすることで、軸の目盛に文字列を表示することができます。
### 軸の目盛と文字列を指定
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xticks([0, np.pi*2, np.pi*4], ['0', '2π', '4π'])
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.show()
【 ax.~~~ 】
オブジェクト指向でグラフを作成する場合は、指定方法が異なります。
ax.set_xticks([数値, 数値, ・・・])
ax.set_xticklabels([文字列, 文字列, ・・・])
のように、目盛の数値と文字列を別々に指定する必要があります。
### 軸の目盛と文字列を指定
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticks([0, np.pi*2, np.pi*4])
ax.set_xticklabels(['0', '2π', '4π'])
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
plt.show()
コードを実行すると、以下のグラフが表示されます。
スポンサーリンク
matplotlibで軸に補助目盛を表示する方法
グラフに補助目盛を表示する方法を紹介します。
【 pyplot.~~~ 】
plt.minorticks_on( ) とすることで、補助目盛を表示できます。
### 補助目盛を表示
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xticks(np.arange(0, np.pi*5, np.pi))
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.minorticks_on()
plt.show()
【 ax.~~~ 】
ax.minorticks_on( ) とすることで、補助目盛を表示できます。
### 補助目盛を表示
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticks(np.arange(0, np.pi*5, np.pi))
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
ax.minorticks_on()
plt.show()
コードを実行すると、以下のグラフが表示されます。
matplotlibで軸に目盛線(グリッド)を表示する方法
グラフに目盛線(グリッド)を表示する方法を紹介します。
【 pyplot.~~~ 】
plt.grid( ) とすることで、目盛線を表示できます。
### 目盛線(グリッド)を表示
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xticks(np.arange(0, np.pi*5, np.pi))
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.grid()
plt.show()
【 ax.~~~ 】
ax.grid( ) とすることで、目盛線を表示できます。
### 目盛線(グリッド)を表示
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticks(np.arange(0, np.pi*5, np.pi))
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
ax.grid()
plt.show()
コードを実行すると、以下のグラフが表示されます。
目盛線(グリッド)の詳細設定
目盛線の詳細な設定方法について、補足的に紹介します。
オブジェクト指向でグラフを作成する場合を例に紹介します。
【 ax.~~~ 】
### 目盛線の詳細設定
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticks(np.arange(0, np.pi*5, np.pi))
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
ax.minorticks_on()
ax.grid(which = 'major', color='black' )
ax.grid(which = 'minor', color='gray', linestyle='--')
plt.show()
コードを実行すると、以下のグラフが表示されます。
> ax.minorticks_on()
補助目盛線も調整したいので、このコードを入れています。
> ax.grid(which = 'major', color='black' )
> ax.grid(which = 'minor', color='gray', linestyle='--')
引数 which に 'major' を指定すると、主目盛線の調整ができます。
引数 which に 'minor' を指定すると、補助目盛線の調整ができます。
スポンサーリンク