是否可以使用%matplotlib notebook
和Matplotlib FuncAnimations
在Google Colaboratory中制作动画可视化效果?
当我尝试时,我得到了
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安装工作正常。
答案 0 :(得分:1)
尝试使用
%matplotlib inline
而不是
%matplotlib notebook
答案 1 :(得分:0)
我遇到了同样的问题。最后,我可以将一个不寻常的工作解决方案混在一起 它还没有与FuncAnimations兼容,但也许你会看到它是如何工作的,所以我会发布它,稍后会修改它。
将所有这些放在一个单元格中并运行
一旦开始更改代码,请确保IPython.display
函数是从同一个单元格运行的,因为Colaboratory会为每个输出创建单独的iframe,并且html和javascript输出都必须以相同的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)