2014-03-25 89 views
1

我想在圖中調整繪圖軸的大小。我知道我可以使用如何在matplotlib中調整框軸的大小

plt.axis('equal') 

plt.gca().set_aspect('equal', 'datalim') 

爲了調整軸,以對所有軸相同的單元尺寸。

datalim

我想要做什麼,而是要給予同樣的方式(在我的情況平方米)的插曲,而不管設備對x和y軸。在這種情況下,劇情必須有xlim = [0, 168]; ylim = [0, 1.01]

我試圖

plt.gca().set_aspect('equal', 'box') 

但我不取得有效的結果:

box

我這麼想嗎?

感謝

+0

你實際得到的,你問什麼。你的xspan比你的yspan大得多,所以這個圖在[x]軸上摺疊。我想你不想要相同的單位。使用'plt.gca()。set_xlim'來設置你想要的座標軸。 – gg349

+0

對不起,我不明白..我想要1:1的方面,但只使用'set_xlim()'和'set_ylim'我不改變方面。該圖像是矩形的(在我看來),但不是一個方形.. – gc5

回答

2

aspect適用於數據,你在談論1:圖/打印單位,例如1具有方形軸。

您可以自己抓住xlimylim和計算方面:

fig, axs = plt.subplots(2,1) 

axs[0].plot(np.random.randn(100).cumsum()) 
axs[1].plot(np.random.randn(100).cumsum()) 

aspect = np.diff(axs[1].get_xlim())/np.diff(axs[1].get_ylim()) 
axs[1].set_aspect(aspect) 

enter image description here

+0

只是一個評論..是否有一個特別的原因,在這種情況下使用'np.diff()'?無論如何,謝謝 – gc5

+2

不,我只是覺得它很方便,因爲你需要軸的範圍。如果您願意,您也可以用另一種方法從最大值中減去最小值。 –