目次
概要
matplotlib で x 軸、y 軸のスケールを設定する方法について紹介します。
公式リファレンス
- pyplot.xscale: x 軸のスケールを取得または設定する。
- axes.Axes.get_xscale: x 軸のスケールを取得する。
- axes.Axes.set_xscale: x 軸のスケールを設定する。
- pyplot.yscale: y 軸のスケールを取得または設定する。
- axes.Axes.get_yscale: y 軸のスケールを取得する。
- axes.Axes.set_yscale: y 軸のスケールを取得または設定する。
スケール
スケールとは、$x$ 軸、$y$ 軸の目盛りが配置される間隔のことをいいます。 デフォルトでは線形スケールですが、指数関数的に増加するような値をプロットする場合は対数スケールにしたほうが見やすくできます。
線形スケール
線形スケールの場合、等間隔に目盛りが配置されます。
In [1]:
import numpy as np
from matplotlib import pyplot as plt
x = np.linspace(-5, 5, 100)
fig, ax = plt.subplots()
ax.set_title("linear")
ax.set_yscale("linear")
ax.grid()
ax.plot(x, x)
plt.show()
対数スケール
対数スケールの場合、指数的に等間隔に目盛りが配置されます。
In [2]:
x = np.linspace(0, 1, 100)
fig, ax = plt.subplots()
ax.set_title("log")
ax.set_yscale("log")
ax.grid()
ax.plot(x, x)
plt.show()
デフォルトでは、基数は10となっていますが、basex
, basey
引数で変更できます。
In [3]:
x = np.linspace(0, 1, 100)
fig, ax = plt.subplots()
ax.set_title("log")
ax.set_yscale("log", basey=2)
ax.grid()
ax.plot(x, x)
plt.show()
nonposx
, nonposy
で正でない値をどのように扱うかを指定できます。
- ‘clip’: 正でない値は0に近い正の値にクリップして表示する
- ‘mask’: 正でない値は無効な値として表示しない
対称な対数スケール
symlog
スケールの場合、[-linthreshy, linthreshy]
の範囲は線形スケール、それ以外の範囲を対数スケールで表示します。
In [4]:
x = np.linspace(-10, 10, 1000)
fig, ax = plt.subplots()
ax.set_title("symlog")
ax.set_xticks(np.arange(-10, 11, 2))
ax.set_yscale("symlog", linthreshy=2)
ax.grid()
ax.plot(x, x)
plt.show()
対数スケールで折れ線グラフを作成するヘルパー関数
- pyplot.loglog: x 軸、y 軸を対数スケールにして折れ線グラフを作成する
- axes.Axes.loglog: x 軸、y 軸を対数スケールにして折れ線グラフを作成する
- pyplot.semilogx: x 軸を対数スケール、y 軸を線形スケールにして折れ線グラフを作成する
- axes.Axes.semilogx: x 軸を対数スケール、y 軸を線形スケールにして折れ線グラフを作成する
- pyplot.semilogy: x 軸を線形スケール、y 軸を対数スケールにして折れ線グラフを作成する
- axes.Axes.semilogy: x 軸を線形スケール、y 軸を対数スケールにして折れ線グラフを作成する
x 軸、y 軸を対数スケールにして折れ線グラフを作成する
pyplot.loglog()
は、x 軸、y 軸を対数スケールにして折れ線グラフを作成するヘルパー関数です。
In [5]:
x = np.linspace(0, 2 ** 20, 1000)
fig, ax = plt.subplots()
ax.loglog(x, x)
ax.grid()
plt.show()
basex, basey, nonposx, nonposy は同様に指定できます。
In [6]:
x = np.linspace(0, 2 ** 20, 1000)
fig, ax = plt.subplots()
ax.loglog(x, x, basex=2, basey=2)
ax.grid()
plt.show()
x 軸を対数スケール、y 軸を線形スケールにして折れ線グラフを作成する
pyplot.semilogx()
は、x 軸を対数スケール、y 軸を線形スケールにして折れ線グラフを作成するヘルパー関数です。
In [7]:
x = np.linspace(-5, 5, 100)
fig, ax = plt.subplots()
ax.semilogx(x, x)
ax.semilogx(np.exp(x), x)
ax.grid()
plt.show()
x 軸を線形スケール、y 軸を対数スケールにして折れ線グラフを作成する
pyplot.semilogy()
は、x 軸を線形スケール、y 軸を対数スケールにして折れ線グラフを作成するヘルパー関数です。
In [8]:
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
ax.semilogy(x, x)
ax.semilogx(x, np.exp(x))
ax.grid()
plt.show()
コメント