是否可以在 Google Colaboratory 中进行动画可视化?

Posted

技术标签:

【中文标题】是否可以在 Google Colaboratory 中进行动画可视化?【英文标题】:Is it possible to do animated visualizations in Google Colaboratory? 【发布时间】:2018-06-16 06:01:27 【问题描述】:

是否可以在 Google Colaboratory 中使用 %matplotlib notebook 和 Matplotlib FuncAnimations 进行动画可视化?

当我尝试时,我得到了

Traceback (most recent call last):  
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/cbook/__init__.py", line 388, in process  
    proxy(*args, **kwargs)  
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/cbook/__init__.py", line 228, in __call__  
    return mtd(*args, **kwargs)  
  File "/usr/local/lib/python3.6/dist-packages/matplotlib/animation.py", line 1560, in _stop  
    self.event_source.remove_callback(self._loop_delay)  
AttributeError: 'NoneType' object has no attribute 'remove_callback'

我的笔记本在 macOS 上使用 Anaconda 的本地 Jupyter 安装上运行良好。

【问题讨论】:

【参考方案1】:

尝试使用

%matplotlib inline

而不是

%matplotlib notebook

【讨论】:

【参考方案2】:

我遇到了同样的问题。最后,我可以拼凑出一个可行的解决方案。 它还与 FuncAnimations 不兼容,但也许你会看到它是如何工作的,所以我已经发布了它,稍后会修改它。

将所有这些放在一个单元格中并运行。 开始更改代码后,请确保 IPython.display 函数在同一个单元格中运行,因为 Colaboratory 会为每个输出创建隔离的 iframe,并且 htmljavascript 输出都必须在同一个 iframe 中结束。

import io
import numpy as np
import time
import base64
import matplotlib.pyplot as plt
import IPython

def fig2b64(f):
  data = io.BytesIO()
  f.savefig(data, format='png')
  data.seek(0)
  return base64.b64encode(data.read()).decode()

f = plt.figure(num=1, clear=True)
x = np.arange(10)
y = np.arange(10)
line = f.gca().plot(x, y)[0]

data_str = fig2b64(f)

IPython.display.display_html(f'<img class="myimage" src="data:image/png;base64,data_str"></img>', raw=True)

for _ in range(10):
  time.sleep(1)
  np.random.shuffle(y)
  line.set_data(x, y)
  data_str = fig2b64(f)
  IPython.display.display_javascript(f'''
    document.querySelector('.myimage').src = 'data:image/png;base64,data_str';
  ''', raw=True)

# suppress final output
plt.close(1)

【讨论】:

以上是关于是否可以在 Google Colaboratory 中进行动画可视化?的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Colaboratory Notebook 上安装 GeoViews

如何在 Colaboratory 中使用 Tensorboard

将数据导入 Google Colaboratory

使用 Google 的 Colaboratory,每次打开文档时都需要安装软件包吗?

如何在Python IDE中使用Google Colaboratory服务器作为python控制台?

在 Google Colaboratory 上,对于 Pytorch,GPU 的性能比 CPU 慢