簡體   English   中英

使用 xarray (pcolormesh) 繪制二維數據,同時保持縱橫比

[英]Plot 2D data with xarray (pcolormesh) while keeping aspect ratio

我正在嘗試使用 xarray (使用matplotlib.pcolormesh )繪制二維數據集,同時保持數據的自然縱橫比。

例子:

import xarray as xr
import matplotlib.pyplot as plt

plt.close('all')
data = xr.DataArray(np.random.randn(2, 3), dims=('x', 'y'),coords={'x': [10, 20],'y' : [0,50,100]})
data.plot() # Will produce a square plot

結果是

添加plt.gca().set_aspect('equal')確實以我想要的方式縮放繪圖,但是, plt.gca().set_aspect('equal')的高度不變,產生

使用參數sizeaspectfigsize也無濟於事。 對於上面的例子:

data.plot(size=6, aspect=150 / 30. * 6)

(或具有相同的結果data.plot(figsize=(150 / 30. * 6,6))

哪個更好但仍然關閉(可能是由於顏色條?)。

size / aspect以及figsize參數都會影響圖形的大小,而不是軸的大小。 軸的縱橫比在一定程度上受這些參數的影響,但難以精確控制。 例如,正如您所指出的,顏色條也會占用一些空間,以便軸的剩余寬度更小。

我會推薦以下內容:

ax = data.plot(figsize=(18, 2))
# Alternatively
# ax = data.plot(size=2, aspect=9)
ax.axes.set_aspect('equal')

第二行確保軸具有正確的縱橫比(就像您的第一次嘗試一樣)。 如果您沒有另外指定圖形大小,它將由默認參數確定。 問題是默認圖形大小與您的實際數據縱橫比不太匹配。 因此,軸必須非常小才能適應默認寬度。

您可以通過提供與您的數據縱橫比(在您的情況下為 7.5)大致匹配的圖形大小來解決此問題。 對我來說,如果您選擇的圖形縱橫比比數據縱橫比大一點,以給顏色條一些空間,那看起來最好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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