Jupyter笔记本中的Imagegrid

时间:2018-10-23 13:38:30

标签: python matplotlib jupyter-notebook

我正在跟踪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()

预期输出:

enter image description here

我得到的是什么

enter image description here

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

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

enter image description here

未显示图。

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

2 个答案:

答案 0 :(得分:2)

这是issue with matplotlib 3.0.0。现在,它已been fixed,因此在即将发布的3.0.1错误修正版本中将不会发生。

在此期间,您有两个选择。

  1. 还原为matplotlib 2.2.3
  2. 决定在使用%matplotlib inline时不裁剪图像。通过

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

    在IPython或Jupyter中。

答案 1 :(得分:0)

删除

%matplotlib inline

,然后重新启动所有内容,或将其放在单独的单元格中,如下所示。看起来,在绘制之前,魔术命令始终总是需要在单独的单元中运行;如果在内核需要重新启动之前运行,它总是需要运行。看这里 enter link description here

enter image description here

,它将起作用。 %matplotlib内联不需要在jupyter中渲染图,这只是一个方便。当调用plt.show()时将渲染图。

我在jupyter中使用mpl遇到了这个问题。我认为问题在于,magic命令导致它在可用时立即渲染任何图,而不是mpl(等待直到被告知渲染以及如何渲染)。

完整的示例代码直接来自您在问题中链接的mpl示例:

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()  # Renders all available axes when called

enter image description here