【发布时间】:2012-02-15 20:55:40
【问题描述】:
我目前正在评估不同的 python 绘图库。现在我正在尝试 matplotlib,但我对它的表现感到非常失望。下面的例子是从SciPy examples 修改而来的,每秒只给我大约 8 帧!
有什么方法可以加快速度,或者我应该选择不同的绘图库吗?
from pylab import *
import time
ion()
fig = figure()
ax1 = fig.add_subplot(611)
ax2 = fig.add_subplot(612)
ax3 = fig.add_subplot(613)
ax4 = fig.add_subplot(614)
ax5 = fig.add_subplot(615)
ax6 = fig.add_subplot(616)
x = arange(0,2*pi,0.01)
y = sin(x)
line1, = ax1.plot(x, y, 'r-')
line2, = ax2.plot(x, y, 'g-')
line3, = ax3.plot(x, y, 'y-')
line4, = ax4.plot(x, y, 'm-')
line5, = ax5.plot(x, y, 'k-')
line6, = ax6.plot(x, y, 'p-')
# turn off interactive plotting - speeds things up by 1 Frame / second
plt.ioff()
tstart = time.time() # for profiling
for i in arange(1, 200):
line1.set_ydata(sin(x+i/10.0)) # update the data
line2.set_ydata(sin(2*x+i/10.0))
line3.set_ydata(sin(3*x+i/10.0))
line4.set_ydata(sin(4*x+i/10.0))
line5.set_ydata(sin(5*x+i/10.0))
line6.set_ydata(sin(6*x+i/10.0))
draw() # redraw the canvas
print 'FPS:' , 200/(time.time()-tstart)
【问题讨论】:
-
@aix - Glumpy 仅在该示例中有所帮助,因为他正在处理快速显示图像数据。在这种情况下它没有帮助。
-
尝试更改后端。看我的回答:stackoverflow.com/a/30655528/2066079。或者这个关于后端的常见问题解答:matplotlib.org/faq/usage_faq.html#what-is-a-backend
-
使用
fig.canvas.draw_idle()而不是fig.canvas.draw()对我有用。
标签: python matplotlib