pythonのグラフ描画ライブラリ「matplotlib」において、グラフの軸を対数軸に変更する方法について紹介します。
本記事では、以下の内容を紹介します。
この記事で分かること
- 【参考】matplotlibの2つのグラフ作成方法について(plt、axの違い)
- グラフのx軸を対数軸に変更
- グラフのy軸を対数軸に変更
- 対数軸に補助目盛を追加する方法
- 対数軸の底を変更する方法
なお、軸に関する設定については、下記の記事で詳しく紹介しています。
スポンサーリンク
【参考】matplotlibの2つのグラフ作成方法について(plt、axの違い)
軸を対数軸に変更する方法を紹介する前に、matplotlibのグラフ作成方法の違いについて紹介します。
matplotlibでは、2通りの方法でグラフを作成できます。
【 pyplot.~~~ 】
matplotlibのもとになった、MATLABに似たグラフ作成スタイルです。
plt.~~~ だけでいろいろできてしまうため、簡単にグラフを作成できます。
ただし、細かい調整はできないので、簡素なグラフでよい場合や、結果を早く確認したい場合などに向いています。
以下、plt.plot( )でグラフを作成するサンプルコードです。
### plt.plot()でグラフを作成
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 100)
y = np.log10(x)
plt.plot(x, y)
plt.show()
【 ax.~~~ 】
オブジェクト指向でグラフを作成する方法です。
fig, ax = plt.subplots( ) などで、Figureオブジェクト(グラフ描画領域)、Axesオブジェクト(座標軸)を作成し、個別のAxesオブジェクトに対してax.plot( )でグラフを描画します。
以下、オブジェクト指向でグラフを作成するサンプルコードです。
### オブジェクト指向でグラフを作成
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 100)
y = np.log10(x)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
表示されるグラフは、どちらの方法も同じです。
matplotlibにおける、2つのグラフ描画方法の違いについては、下記の記事で紹介しています。
スポンサーリンク
matplotlibのグラフのx軸を対数軸に変更
ここから、グラフの軸を対数軸に変更する方法について紹介していきます。
前述のとおり、matplotlibには2通りのグラフ描画方法があるため、サンプルコードもそれぞれの方法について紹介します。
はじめに、グラフのx軸を対数軸に変更する方法について、紹介します。
【pyplot.~~~ 】
plt.xscale('log') とすることで、x軸を対数軸に変更できます。
### x軸を対数軸に変更
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 100)
y = np.log10(x)
plt.plot(x, y)
plt.xscale('log')
plt.show()
【 ax.~~~ 】
ax.set_xscale('log') とすることで、x軸を対数軸に変更できます。
### x軸を対数軸に変更
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 100)
y = np.log10(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xscale('log')
plt.show()
作成されるグラフは、どちらのコードでも同じです。
matplotlibのグラフのy軸を対数軸に変更
グラフのy軸を対数軸に変更する方法について、紹介します。
例として、指数関数のグラフのy軸を対数軸に変更します。
対数軸に変更する前のグラフはこちらになります。
### 指数関数のグラフ
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
plt.plot(x, y)
plt.show()
コード実行後、表示されるグラフはこちらになります。
こちらの指数関数を例に、y軸を対数軸に変更します。
【pyplot.~~~ 】
plt.yscale('log') とすることで、y軸を対数軸に変更できます。
### y軸を対数軸に変更
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
plt.plot(x, y)
plt.yscale('log')
plt.show()
【 ax.~~~ 】
ax.set_yscale('log') とすることで、y軸を対数軸に変更できます。
### y軸を対数軸に変更
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_yscale('log')
plt.show()
作成されるグラフは、どちらのコードでも同じです。
スポンサーリンク
対数軸に補助目盛を追加する方法
グラフの対数軸に、補助目盛を追加する方法について紹介します。
minorticks_on( )を記述すると、補助目盛を表示できるようになります。
grid( )で、グリッド線が表示できるようになります。
また、引数として which='major' を指定すると主目盛線について設定できます。
which='minor' を指定すると補助目盛線について設定できます。
以下、それぞれのサンプルコードです。
【pyplot.~~~ 】
### 補助目盛を追加
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
plt.plot(x, y)
plt.yscale('log')
plt.minorticks_on()
plt.grid(which='major',color='black',linestyle='-')
plt.grid(which='minor',color='gray',linestyle='--')
plt.show()
【 ax.~~~ 】
### 補助目盛を追加
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_yscale('log')
ax.minorticks_on()
ax.grid(which='major',color='black',linestyle='-')
ax.grid(which='minor',color='gray',linestyle='--')
plt.show()
作成されるグラフは、どちらのコードでも同じです。
> ax.grid(which='major',color='black',linestyle='-')
> ax.grid(which='minor',color='gray',linestyle='--')
グリッド線を表示しています。
引数 which = 'major' で主目盛線を設定しています。線の色は黒を指定しています。
引数 which = 'minor' で補助目盛線を設定しています。線の色は灰色を指定し、線は点線を指定しています。
対数軸の底を変更する方法
グラフの対数軸にの底を変更する方法について紹介します。
yscale( )の引数に、base = を指定すると、底を変更できるようになります。
以下、それぞれのサンプルコードです。
【 pyplot.~~~ 】
### 対数軸の底を変更
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
plt.plot(x, y)
plt.yscale('log', base = 2)
plt.show()
【 ax.~~~ 】
### 対数軸の底を変更
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 10)
y = 2**x
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_yscale('log', base = 2)
plt.show()
作成されるグラフは、どちらのコードでも同じです。
> ax.set_yscale('log', base = 2)
引数 base = 2 を指定し、目盛の底を2にしています。
スポンサーリンク