如何在 Matplotlib 中繪製等軸的正方形圖

Suraj Joshi 2023年1月30日 2020年6月9日
  1. set_aspect() 繪製等軸方圖
  2. 使用 axis() 方法生成正方形圖
如何在 Matplotlib 中繪製等軸的正方形圖

我們可以使用 set_aspect() 方法設定繪圖的縱橫比以使其成為正方形繪圖,而 axis() 方法也可以用於在 Matplotlib 中製作具有相等軸的正方形繪圖。

set_aspect() 繪製等軸方圖

我們可以使用 matplotlib.axes.Axes.set_aspect() 函式設定長寬比。如果在函式中使用等於作為長寬比,則得到的圖在 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 等於 equal.png 的等軸正方形圖

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 一般具有相等軸的正方形圖

使用 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()

使用軸方法繪製等軸正方形圖

Warning
此解決方案中的軸範圍是自動選擇的。它等於 ax.set_aspect('equal', adjustable='datalim')。不遵守使用者設定的明確軸限制。
Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Matplotlib Axes