首页 > 解决方案 > Jupyter 笔记本中的 Imagegrid

问题描述

我正在关注Imagegrid上的 matplotlib 文档中的一个示例,并且我正在尝试从 Jupyter 笔记本中复制它:

% matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid
import numpy as np

im = np.arange(100)
im.shape = 10, 10

fig = plt.figure(1, (4., 4.))
grid = ImageGrid(fig, 111,  # similar to subplot(111)
                 nrows_ncols=(2, 2),  # creates 2x2 grid of axes
                 axes_pad=0.1,  # pad between axes in inch.
                 )

for i in range(4):
    grid[i].imshow(im)  # The AxesGrid object work as a list of axes.


plt.show()

预期输出:

在此处输入图像描述

我得到了什么:

在此处输入图像描述

如您所见,我没有得到图像网格。我究竟做错了什么?

编辑 如果我删除该%matplotlib inline选项,我就会得到这个(这是cell[1]为了证明我重新启动了我的内核):

在此处输入图像描述

没有显示图。

我正在运行matplotlib版本3.0.0,检查conda list matplotlibjupyter4.4.0,检查jupyter --version。在 Windows 10、Anaconda、python 3.6 上。

标签: pythonmatplotlibjupyter-notebook

解决方案


这是matplotlib 3.0.0 的问题。这已被修复,因此它不会出现在即将发布的 3.0.1 错误修复版本中。

与此同时,您有两个选择。

  1. 恢复到 matplotlib 2.2.3
  2. 决定在使用时不裁剪图像%matplotlib inline。通过这样做

    %config InlineBackend.print_figure_kwargs = {'bbox_inches':None}
    

    在 IPython 或 Jupyter 中。


推荐阅读