Ошибка при построении и сохранении фигуры в блокноте% matplotlib - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь построить и сохранить интерактивную фигуру, используя matplotlib в записной книжке Jupyter, используя следующий код:

%matplotlib notebook
plt.figure()
plt.imshow([[1, 2, 3],[4, 5, 6]])
plt.savefig('delete.png')

При этом я получаю следующую ошибку:

--------------------------------------------------------------------------- 
AttributeError                            Traceback (most recent call last)
 ~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backend_bases.py in _wait_cursor_for_draw_cm(self)    
   2772             try:
-> 2773                 self.set_cursor(cursors.WAIT)    
   2774                 yield

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backends/backend_webagg_core.py in set_cursor(self, cursor)
    380         if cursor != self.cursor:
--> 381             self.canvas.send_event("cursor", cursor=cursor)
    382         self.cursor = cursor

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backends/backend_webagg_core.py in send_event(self, event_type, **kwargs)
    345     def send_event(self, event_type, **kwargs):
--> 346         self.manager._send_event(event_type, **kwargs)
    347 

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

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last) <ipython-input-8-de5d3bbf172d> in <module>
      2 plt.figure()
      3 plt.imshow([[1, 2, 3],[4, 5, 6]])
----> 4 plt.savefig('delete.png')

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/pyplot.py in savefig(*args, **kwargs)
    721 def savefig(*args, **kwargs):
    722     fig = gcf()
--> 723     res = fig.savefig(*args, **kwargs)
    724     fig.canvas.draw_idle()   # need this if 'transparent=True' to reset colors
    725     return res

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/figure.py in savefig(self, fname, transparent, **kwargs)    
   2201             self.patch.set_visible(frameon)    
   2202 
-> 2203         self.canvas.print_figure(fname, **kwargs)    
   2204     
   2205         if frameon:

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backend_bases.py in 
  print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, **kwargs)    
   2091                    orientation=orientation,    
   2092                     bbox_inches_restore=_bbox_inches_restore,
-> 2093                     **kwargs)    
   2094             finally:    
   2095                 if bbox_inches and restore_bbox:

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in print_png(self, filename_or_obj, metadata, pil_kwargs, *args,
**kwargs)
    512         }
    513 
--> 514         FigureCanvasAgg.draw(self)
    515         if pil_kwargs is not None:
    516             from PIL import Image

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in draw(self)
    390         with RendererAgg.lock, \
    391              (self.toolbar._wait_cursor_for_draw_cm() if self.toolbar
--> 392               else nullcontext()):
    393             self.figure.draw(self.renderer)
    394             # A GUI class may be need to update a window using this draw, so

~/anaconda3/envs/asd/lib/python3.6/contextlib.py in __enter__(self)
     79     def __enter__(self):
     80         try:
---> 81             return next(self.gen)
     82         except StopIteration:
     83             raise RuntimeError("generator didn't yield") from None

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backend_bases.py in _wait_cursor_for_draw_cm(self)    
   2774                 yield    
   2775             finally:
-> 2776                 self.set_cursor(self._lastCursor)    
   2777         else:    
   2778             yield

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backends/backend_webagg_core.py in set_cursor(self, cursor)
    379     def set_cursor(self, cursor):
    380         if cursor != self.cursor:
--> 381             self.canvas.send_event("cursor", cursor=cursor)
    382         self.cursor = cursor
    383 

~/anaconda3/envs/asd/lib/python3.6/site-packages/matplotlib/backends/backend_webagg_core.py in send_event(self, event_type, **kwargs)
    344 
    345     def send_event(self, event_type, **kwargs):
--> 346         self.manager._send_event(event_type, **kwargs)
    347 
    348 

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

Сама фигура отрисовывается нормально, когда я избавляюсь от команды savefig. Кроме того, и рендеринг, и сохранение отлично работают, когда я использую %matplotlib inline вместо %matplotlib notebook. Что вызывает эту проблему и как я могу сохранить цифры при использовании %matplotlib notebook?

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