簡體   English   中英

matplotlib.pyplot,保留繪圖的縱橫比

[英]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 '縮放'

最好的辦法是使用:

 plt.axis('scaled')

正如索爾洛·卡斯特羅所說。 因為在相等的情況下,您不能在不更改另一個軸的情況下更改一個軸限制,所以如果您想適合所有非平方圖形,您將有很多空白。

平等的

在此處輸入圖片說明

縮放

在此處輸入圖片說明

'平等' 使用 ax

或者,您可以使用軸類

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM