【matplotlib】軸を任意の位置に動かす方法[Python]

  • URLをコピーしました!
目次

matplotlib

前回、Pythonのmatplotlibでグラフの原点(0, 0)に軸を配置する方法を紹介しました。

今回はmatplotlibで軸を任意の位置に動かす方法を紹介します。

まず前回のおさらいですが、X軸を原点に移動するには「plt.gca().spines[‘bottom’].set_position((‘data’, 0))」、Y軸を中心に移動するには「plt.gca().spines[‘left’].set_position((‘data’, 0))」を用いました。

import matplotlib.pyplot as plt

x = range(-10, 11)
y = [i**3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.grid()

plt.gca().spines['bottom'].set_position(('data', 0))
plt.gca().spines['left'].set_position(('data', 0))

plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)

plt.show()

実行結果

それでは始めていきましょう。

特定のX、Yの値に軸を移動する方法

X軸を特定のYの値に移動するには「plt.gca().spines[‘bottom’].set_position((‘data’, Yの値))」、Y軸を特定のXの値に移動するには「plt.gca().spines[‘left’].set_position((‘data’, Xの値))」とします。

import matplotlib.pyplot as plt

x = range(-10, 11)
y = [i**3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.grid()

plt.gca().spines['bottom'].set_position(('data', -500))
plt.gca().spines['left'].set_position(('data', 5))

plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)

plt.show()

実行結果

グラフ上の特定の比率の場所に軸を移動する方法

次にグラフ上の特定の比率の場所に軸を移動する方法です。

X軸をY軸上の特定の比率の場所に移動するには「plt.gca().spines[‘bottom’].set_position((‘axes’, 比率))」、Y軸をX軸上の特定の比率の場所に移動するには「plt.gca().spines[‘left’].set_position((‘axes’, 比率))」を用います。

import matplotlib.pyplot as plt

x = range(-10, 11)
y = [i**3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.grid()

plt.gca().spines['bottom'].set_position(('axes', 0.25))
plt.gca().spines['left'].set_position(('axes', 0.25))

plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)

plt.show()

実行結果

ちなみに比率にマイナスの値を指定すると軸は外側に移動します。

import matplotlib.pyplot as plt

x = range(-10, 11)
y = [i**3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.grid()

plt.gca().spines['bottom'].set_position(('axes', -0.25))
plt.gca().spines['left'].set_position(('axes', -0.25))

plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)

plt.show()

実行結果

軸を特定のピクセル数移動させる方法

X軸を特定のピクセル数だけ移動させるには「plt.gca().spines[‘bottom’].set_position((‘outward’, ピクセル数))」、Y軸をX軸上の特定の比率の場所に移動するには「plt.gca().spines[‘left’].set_position((‘outward’, ピクセル数))」を用います。

import matplotlib.pyplot as plt

x = range(-10, 11)
y = [i**3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.grid()

plt.gca().spines['bottom'].set_position(('outward', 50))
plt.gca().spines['left'].set_position(('outward', 50))

plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)

plt.show()

実行結果

この結果からも分かるように正の値を指定した場合、軸は外側に移動します。

また負の値を指定した場合は内側に移動します。

import matplotlib.pyplot as plt

x = range(-10, 11)
y = [i**3 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.grid()

plt.gca().spines['bottom'].set_position(('outward', -50))
plt.gca().spines['left'].set_position(('outward', -50))

plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)

plt.show()

実行結果

次回は2軸グラフで軸を移動させる方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次