Как я могу показать одну и ту же фигуру matplotlib несколько раз в оболочке IPython?

Я запустил следующий код для построения одной строки с объектно-ориентированным API matplotlib.

$ ipython --pylab
In [1]: fig = plt.figure() # An empty figure is shown in popped up window here
In [2]: ax = fig.add_subplot(1,1,1)
In [3]: ax.plot(arange(10)) # no figure is shown up here
Out[3]: [<matplotlib.lines.Line2D at 0x7fb134118400>]
In [4]: fig.show()

когда fig = plt.figure() выполняется, появляется новое окно, и оно показывает пустую фигуру. После построения ax.plot(arange(10)), никакая фигура не отображается автоматически, поэтому я попытался показать фигуру fig.show() и я получил эту ошибку.

AttributeError                            Traceback (most recent call last)
<ipython-input-6-6ebedab27258> in <module>()
----> 1 fig.show()

~/.pyenv/versions/3.6.4/envs/analysis/lib/python3.6/site-packages/matplotlib/figure.py in show(self, warn)
    409         if manager is not None:
    410             try:
--> 411                 manager.show()
    412                 return
    413             except NonGuiException:

~/.pyenv/versions/3.6.4/envs/analysis/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py in show(self)
    560             self.canvas.draw_idle()
    561         # Raise the new window.
--> 562         self.canvas.manager.window.attributes('-topmost', 1)
    563         self.canvas.manager.window.attributes('-topmost', 0)
    564         self._shown = True

AttributeError: 'NoneType' object has no attribute 'attributes'

Но такой уродливый однострочник правильно показывает линейный график.

plt.figure().add_subplot(1,1,1).plot(arange(10))

Кажется, что оболочка IPython не может показывать одну и ту же цифру несколько раз. Как я могу избежать этого поведения?

1 ответ

Проблема заключалась в том, как я относился к окнам с пустой фигурой. Я всегда закрывал его сразу после выполнения fig = plt.figure(), Я не должен этого делать. Держать его открытым позволяет ax.plot() нарисовать линию на открытой фигуре.

Другие вопросы по тегам