[英]matplotlib.pyplot, preserve aspect ratio of the plot
假設我們有一個多邊形坐標為polygon = [(x1, y1), (x2, y2), ...],以下代碼顯示多邊形:
import matplotlib.pyplot as plt
plt.fill(*zip(*polygon))
plt.show()
默認情況下,它會嘗試調整縱橫比,以便多邊形(或任何其他圖表)適合窗口內,並自動更改它以使其即使在調整大小后也適合。 這在許多情況下都很好,除非您嘗試目視估計圖像是否失真。 如何將縱橫比固定為嚴格的 1:1?
(不確定“縱橫比”是否是正確的術語,所以如果不是 - 我需要 X 軸和 Y 軸都具有 1:1 的比例,以便 X 和 Y 上的 (0, 1) 都采用精確的相同數量的屏幕空間。無論我如何調整窗口大小,我都需要將其保持為 1:1。)
是否有助於使用:
plt.axis('equal')
最好的辦法是使用:
plt.axis('scaled')
正如索爾洛·卡斯特羅所說。 因為在相等的情況下,您不能在不更改另一個軸的情況下更改一個軸限制,所以如果您想適合所有非平方圖形,您將有很多空白。
或者,您可以使用軸類。
fig = plt.figure()
ax = figure.add_subplot(111)
ax.imshow(image)
ax.axes.set_aspect('equal')
我敢肯定,有一種方法可以將其直接設置為繪圖命令的一部分,但我不記得這個技巧了。 要做到這一點,您可以使用當前軸並使用“set_aspect('equal')”設置它的縱橫比。 在你的例子中:
import matplotlib.pyplot as plt
plt.fill(*zip(*polygon))
plt.axes().set_aspect('equal', 'datalim')
plt.show()
我一直在使用它,它來自 matplotlib 網站上的示例。
更好的plt.axis('scaling')
,如果你想用xlim()
和ylim()
修改軸,它會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.