Warning: Undefined variable $position in /home/pystyles/pystyle.info/public_html/wp/wp-content/themes/lionblog/functions.php on line 4897

matplotlib – x 軸、y 軸のスケールを設定する方法

matplotlib – x 軸、y 軸のスケールを設定する方法

概要

matplotlib で x 軸、y 軸のスケールを設定する方法について紹介します。

Advertisement

公式リファレンス

スケール

スケールとは、$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’: 正でない値は無効な値として表示しない
Advertisement

対称な対数スケール

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

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