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

  1. set_aspect() を用いて等軸の正方形のプロットを作成する
  2. 正方形のプロットを生成する axis() メソッド

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./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’)」と同じです。ユーザーが設定した明示的な軸の制限は考慮されません。

関連記事 - Matplotlib Axes

  • Matplotlib でサブプロットの軸をオフにする方法
  • Matplotlib で軸を反転する方法
  • comments powered by Disqus