簡體   English   中英

Matplotlib Pyplot ImageGrid 圖問題

[英]Matplotlib Pyplot ImageGrid Figure Problem

我遇到了 AXES_GRID1 的問題( https://matplotlib.org/mpl_toolkits/axes_grid/users/overview.html )。 特別是在 ImageGrid() 的使用中。

以下代碼准備並顯示與預期完全相同的圖形:

import matplotlib.pyplot as plt
# from mpl_toolkits.axes_grid1 import AxesGrid
from mpl_toolkits.axes_grid1 import ImageGrid
import numpy as np

fig = plt.figure(figsize=(15, 15))

grid = ImageGrid(fig, 111,
                nrows_ncols=(3, 4), 
                axes_pad=0.5,
                cbar_mode='single',
                cbar_location='right',
                cbar_pad=0.5,
                direction='row',
                )
plt.tight_layout()
plt.show()

要創建的圖形概述

但是一旦我將我的數字添加到相關軸上,就像這樣:

import matplotlib.pyplot as plt
# from mpl_toolkits.axes_grid1 import AxesGrid
from mpl_toolkits.axes_grid1 import ImageGrid
import numpy as np

fig = plt.figure(figsize=(15, 15))

grid = ImageGrid(fig, 111,
                nrows_ncols=(3, 4), 
                axes_pad=0.5,
                cbar_mode='single',
                cbar_location='right',
                cbar_pad=0.5,
                direction='row',
                )
rc = 0
for season in ('MAM', 'JJA', 'SON'):
    im = dat_fluo_ref.sel(time=select_season(dat_fluo_ref['time.season'], season)).groupby('time.hour').mean('time').radiance.plot.pcolormesh(
        ax=grid[rc + 0], vmin=0, vmax=0.5, cmap='Spectral_r', add_colorbar=False,)

    im = dat_fluo_inc.sel(time=select_season(dat_fluo_inc['time.season'], season)).groupby('time.hour').mean('time').radiance.plot.pcolormesh(
        ax=grid[rc + 1], vmin=0, vmax=0.5, cmap='Spectral_r', add_colorbar=False,)

    im = dat_full_ref.sel(time=select_season(dat_full_ref['time.season'], season)).groupby('time.hour').mean('time').radiance.plot.pcolormesh(
        ax=grid[rc + 2], vmin=0, vmax=0.5, cmap='Spectral_r', add_colorbar=False,)

    im = dat_full_inc.sel(time=select_season(dat_full_inc['time.season'], season)).groupby('time.hour').mean('time').radiance.plot.pcolormesh(
        ax=grid[rc + 3], vmin=0, vmax=0.5, cmap='Spectral_r', add_colorbar=False)
    rc += 4
cbar = grid.cbar_axes[0].colorbar(im)
plt.tight_layout()
plt.show()

然后生成的圖形(參見2 )不再像預覽圖(參見1 )。

這可能是傳遞給 ImageGrid 的參數的問題。 圖創建但完全錯誤的縱橫比。看起來壓縮了。

謝謝您的幫助!

ImageGrid正在嘗試為像素保持正方形。 如果您的列多於行,那可能不是您想要完成的。 在構造 ImageGrid 時嘗試傳遞aspect=False

相比:

from mpl_toolkits.axes_grid1 import ImageGrid

fig = plt.figure()
grid = ImageGrid(fig, 111,
                 nrows_ncols=(3, 4),
                 axes_pad=0.5,
                 cbar_mode='single',
                 cbar_location='right',
                 cbar_pad=0.5,
                 direction='row',
                 aspect=False
                )
for ax in grid.axes_all:
    ax.pcolormesh(np.random.random(size=(5,20)))

在此處輸入圖像描述

from mpl_toolkits.axes_grid1 import ImageGrid

fig = plt.figure()
grid = ImageGrid(fig, 111,
                 nrows_ncols=(3, 4),
                 axes_pad=0.5,
                 cbar_mode='single',
                 cbar_location='right',
                 cbar_pad=0.5,
                 direction='row',
                 aspect=True
                )
for ax in grid.axes_all:
    ax.pcolormesh(np.random.random(size=(5,20)))

在此處輸入圖像描述

暫無
暫無

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

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