【matplotlib】xlim、ylim、set_xlim、set_ylimでグラフエリアの最大値、最小値を取得する方法[Python]

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

matplotlib

前回、PythonのNumPyでndarrayから複数のインデックスを指定し複数の要素を一度に取得する方法を紹介しました。

今回はmatplotlibでxlim、ylimを使ってグラフエリアの最大値、最小値を取得する方法を紹介します。

まずはこんな感じでランダムな数値をもつグラフを作成してみました。

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(12345)

x = range(100)
y = [rng.integers(100) for _ in x]

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

plt.plot(x, y)

plt.show()

実行結果

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

xlim、ylimのおさらい

まずはxlim、ylimのおさらいからです。

xlim、ylimはそれぞれ「plt.xlim(最小値, 最大値)」、「plt.ylim(最小値, 最大値)」とすることでグラフエリアの最小値、最大値を設定することができる関数です。

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(12345)

x = range(100)
y = [rng.integers(100) for _ in x]

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

plt.plot(x, y)

plt.xlim(25, 75)
plt.ylim(25, 75)

plt.show()

実行結果

最大値、最小値の取得方法

xlim、ylimですが実は2つの返り値があり、それを取得することでグラフエリアの最小値、最大値を取得することができます。

つまり「x_min, x_max = plt.xlim()」や「y_min, y_max = plt.ylim()」とすることで、グラフエリアのX軸方向の最小値、最大値、Y軸方向の最小値、最大値を取得することができます。

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(12345)

x = range(100)
y = [rng.integers(100) for _ in x]

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

plt.plot(x, y)

x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()

print(x_min, x_max)
print(y_min, y_max)

plt.show()

実行結果

もちろんxlim、ylimに値を与えた場合でも可能です。

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(12345)

x = range(100)
y = [rng.integers(100) for _ in x]

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

plt.plot(x, y)

x_min, x_max = plt.xlim(0, 100)
y_min, y_max = plt.ylim(0, 100)

print(x_min, x_max)
print(y_min, y_max)

plt.show()

実行結果
0.0 100.0
0.0 100.0

set_xlim、set_ylimの場合

2軸グラフなどで使うset_xlim、set_ylimでも同じく「ax1_xmin, ax1_xmax = ax1.set_xlim()」、「ax1_ymin, ax1_ymax = ax1.set_ylim()」とすることで、それぞれの軸の最小値、最大値を取得することができます。

import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(12345)

x = range(100)
y1 = [rng.integers(100) for _ in x]
y2 = [rng.integers(10) for _ in x]

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

ax1 = fig.subplots()
ax2 = ax1.twinx()

ax1.plot(x, y1, color="tab:blue")
ax2.plot(x, y2, color="tab:orange")

ax1_xmin, ax1_xmax = ax1.set_xlim()
ax1_ymin, ax1_ymax = ax1.set_ylim()

print(ax1_xmin, ax1_xmax)
print(ax1_ymin, ax1_ymax)

plt.show()

実行結果
-4.95 103.95
-4.9 102.9

次回はSciPyとPandasを使ってグラフの歪度(左右の非対称具合)と尖度(尖り具合)を取得する方法を紹介します。

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

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

コメント

コメントする

目次