我最近切换到新的macbook pro(从2015年到2017年)。
来自
macOS Sierra 10.12.6
conda 4.3.30
Jupyter 4.1.0
Python 2.7.11 | Annaconda custom(x86_64) [GCC 4.2.1 (Apple Inc. build 5577) on darwin
到
High Sierra 10.13.2
Jupyter 4.4.0
conda 4.3.30
Python 2.7.14 |Anaconda custom (64-bit)| (default, Dec 7 2017, 11:07:58)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
我通过旧计算机上的新计时器备份恢复新计算机来移动我的所有数据。除了matplotlib
之外,一切都很顺利。
在Jupyter notebook
,
如果我跑,
import matplotlib.pyplot as plt
plt.plot(range(10))
plt.show()
它适用于在笔记本上显示内联的情节。
但如果我做%matplotlib
转到Using matplotlib backend: MacOSX
但是在终端中显示以下消息
[I 13:09:59.765 NotebookApp] Replaying 6 buffered messages
ERROR:tornado.application:Exception in callback <functools.partial object at 0x112208fc8>
Traceback (most recent call last):
File "//anaconda/lib/python2.7/site-packages/tornado/ioloop.py", line 605, in _run_callback
ret = callback()
File "//anaconda/lib/python2.7/site-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "//anaconda/lib/python2.7/site-packages/ipykernel/kernelbase.py", line 262, in enter_eventloop
self.eventloop(self)
File "//anaconda/lib/python2.7/site-packages/ipykernel/eventloops.py", line 278, in loop_cocoa
show.mainloop()
AttributeError: 'function' object has no attribute 'mainloop'
然后现在,情节没有出现。
plt.plot(range(10))
plt.show()
现在没有任何结果。单元格执行但没有任何反应。
答案 0 :(得分:0)
我在Windows 10上使用Python 3.6和最新的matplotlib软件包。这对我有用:
import numpy as np
import matplotlib
matplotlib.use('tkAgg')
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1,2)
plt.show(block=False)
for i in range(100):
print(i)
a = np.random.rand(10,10)
ax[0].imshow(a)
a = np.random.rand(10,10)
ax[1].imshow(a)
fig.canvas.draw()
在代码中任何使用matplot之前,都必须先调用matplotlib.use('tkAgg')
。关键部分是fig.canvas.draw()
上面的代码对我有用,但是当它是真正占用大量CPU的代码时,它可能会占用所有功能,因此直到循环结束之前,绘图才得以更新。在这种情况下,请在plt.pause(1e-2)
之后添加此语句draw()