首先,(尽管这根本不会改变性能)考虑清理你的代码,类似这样:import matplotlib.pyplot as plt
import numpy as np
import time
x = np.arange(0, 2*np.pi, 0.01)
y = np.sin(x)
fig, axes = plt.subplots(nrows=6)
styles = ['r-', 'g-', 'y-', 'm-', 'k-', 'c-']
lines = [ax.plot(x, y, style)[0] for ax, style in zip(axes, styles)]
fig.show()
tstart = time.time()
for i in xrange(1, 20):
for j, line in enumerate(lines, start=1):
line.set_ydata(np.sin(j*x + i/10.0))
fig.canvas.draw()
print 'FPS:' , 20/(time.time()-tstart)
通过上面的例子,我可以达到10fps。
简单的说一下,根据你的确切用例,matplotlib可能不是一个好选择。它面向出版质量数据,而不是实时显示。
然而,你可以做很多事情来加速这个例子。
有两个主要原因,为什么这是如此缓慢。
1)调用fig.canvas.draw()重绘所有内容。这是你的瓶颈。就你而言,你不需要重新绘制轴边界,刻度标签等等。</