如何在 Matplotlib 中繪製等軸的正方形圖
Suraj Joshi
2023年1月30日
我們可以使用 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()
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()
使用 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')
。不遵守使用者設定的明確軸限制。作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn