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軸グラフで軸を移動させる方法を紹介します。
ではでは今回はこんな感じで。
コメント