【问题标题】:Plot 2D data with xarray (pcolormesh) while keeping aspect ratio使用 xarray (pcolormesh) 绘制 2D 数据,同时保持纵横比
【发布时间】:2020-07-06 08:11:17
【问题描述】:

我正在尝试使用 xarray(使用 matplotlib.pcolormesh)绘制 2D 数据集,同时保持数据的自然纵横比。

例子:

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') 确实以我想要的方式缩放绘图,但是颜色条的高度没有改变

使用参数sizeaspectfigsize 也无济于事。 对于上面的例子:

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

(或同样的结果data.plot(figsize=(150 / 30. * 6,6))

哪个更好但仍然关闭(可能是由于颜色条?)。

【问题讨论】:

    标签: python matplotlib python-xarray


    【解决方案1】:

    size/aspectfigsize 参数都会影响图形的大小,而不是轴的大小。 轴的纵横比在一定程度上受这些参数的影响,但难以精确控制。例如,正如您所指出的,颜色栏也会占用一些空间,因此轴的剩余宽度会更小。

    我会推荐以下内容:

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

    第二行确保轴具有正确的纵横比(就像您第一次尝试一样)。 如果您没有另外指定图形大小,它将由默认参数确定。问题是默认图形大小与您的实际数据纵横比不太吻合。因此,轴必须非常小才能适应默认宽度。

    您可以通过提供与您的数据纵横比大致匹配的图形大小(在您的情况下为 7.5)来解决此问题。 对我来说,最好选择图形纵横比比数据纵横比大一点,以便给颜色条一些空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 2018-03-11
      • 1970-01-01
      相关资源
      最近更新 更多