Matplotlib で軸が等しい正方形のプロットを作成する方法

Suraj Joshi 2023年1月30日
  1. set_aspect() を用いて等軸の正方形のプロットを作成する
  2. 正方形のプロットを生成する axis() メソッド
Matplotlib で軸が等しい正方形のプロットを作成する方法

set_aspect() メソッドを使用してプロットのアスペクト比を設定し、それを正方形のプロットにすることができます。また、axis() メソッドを使用して、Matplotlib で軸が等しい正方形のプロットを作成することもできます。

set_aspect() を用いて等軸の正方形のプロットを作成する

matplotlib.axes.Axes.set_aspect() 関数を使用してアスペクト比を設定できます。関数の縦横比として "equal" を使用すると、データポイントから X 軸と Y 軸のプロット単位まで同じスケーリングのプロットが得られます。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(x, y)
plt.xlim(-3, 3)
plt.ylim(-3, 3)

ax.set_aspect("equal", adjustable="box")

plt.xlabel("x")
plt.ylabel("sinx")

plt.show()

set_aspect to equal を使用して軸が等しい正方形のプロット

plt.xlim(-3, 3)
plt.ylim(-3, 3)

ax.set_aspect("equal")

X 軸と Y 軸の両方が同じ範囲になるように設定します。次に、ax.set_aspect('equal') は両方の軸を等しく設定します。

上記の方法では、両方の軸の範囲が同じに設定されている場合にのみ正方形のプロットが生成されます。一般的なケースで正方形のプロットを生成するには、次のコマンドを使用して手動でアスペクト比を設定する必要があります。

axes.set_aspect(1.0 / axes.get_data_ratio())

axes.get_data_ratio() は生のプロットデータの比率を取得します。その逆数の値は set_aspect() に渡され、軸の制限を手動で設定せずに軸を等しくします。

コード:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(x, y)

ax.set_aspect(1.0 / ax.get_data_ratio(), adjustable="box")

plt.xlabel("x")
plt.ylabel("sinx")
plt.show()

set_aspect general を使用した等しい軸を持つ正方形のプロット

正方形のプロットを生成する axis() メソッド

"square"matplotlib.pyplot.axis() の引数として渡すと、正方形のプロットが作成されますここで、両方の軸の範囲は、プロットの長さと同じです。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axis("square")
plt.xlabel("x")
plt.ylabel("sinx")
plt.show()

axis methodl を使用して等しい軸を持つ正方形のプロット

Warning
このソリューションの軸の範囲は自動的に選択されます。ax.set_aspect('equal', adjustable='datalim') と同じです。ユーザーが設定した明示的な軸の制限は考慮されません。
著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Matplotlib Axes