Сетка изображения в блокноте Jupyter - PullRequest
0 голосов
/ 23 октября 2018

Я следую примеру из документации 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, jupyter равно 4.4.0, проверено с помощью jupyter --version.В Windows 10, Anaconda, python 3.6.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Это проблема с 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.

0 голосов
/ 23 октября 2018

Удалите

%matplotlib inline

и перезапустите все или поместите его в отдельную ячейку, как показано ниже.Похоже, что магическая команда всегда должна запускаться в отдельной ячейке перед построением графика, и если она была выполнена до перезапуска ядра.Смотрите здесь введите описание ссылки здесь

enter image description here

, и это будет работать.% matplotlib inline не требуется для отображения графиков в jupyter, это просто удобство.plt.show () будет отображать графики всякий раз, когда он вызывается.

У меня была эта проблема с некоторыми mpl в jupyter.Я думаю, проблема в том, что волшебная команда заставляет ее отображать любой сюжет, как только он становится доступным, в отличие от 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...