我有一個不斷變化的256x256 numpy數組數組。在每次迭代中,我都會拍攝一張快照來製作電影。快照是使用matplotlib
製作的3d表面圖。如何提高python繪圖的速度?
問題是繪圖花費我> 2秒,每次迭代大約600秒250次迭代。我有相同的程序在MATLAB中運行,並且在迭代次數相同的情況下爲80-120秒。
問題:有沒有方法加快matplotlib
3d表面繪圖或有更快的python繪圖工具?
下面是一些代碼:
## initializing plot
fig = plt.figure(111)
fig.clf()
ax = fig.gca(projection='3d')
X = np.arange(0, field_size, 1)
Y = np.arange(0, field_size, 1)
X, Y = np.meshgrid(X, Y)
## the loop
start_time = time.time()
for k in xrange(250):
it_time = time.time()
field[128,128] = maxvalue
field = scipy.ndimage.convolve(field, kernel)
print k, " calculation: ", time.time() - it_time, " seconds"
it_time = time.time()
ax.cla()
ax.plot_surface(X, Y, field.real, rstride=4, cstride=4, cmap=cm.hot,
linewidth=0, antialiased=False)
ax.set_zlim3d(-50, 150)
filename = "out_%d.png" % k
fig.savefig(filename)
#fig.clf()
print k, " plotting: ", time.time() - it_time, " seconds"
print "computing: ", time.time() - start_time, " seconds"
謝謝,也許我會tru gnuplot。但交互模式如何影響速度? – Cubius
在「交互模式」中,每個matplotlib命令都會重繪繪圖,因此速度較慢。你可以使用'plt.ioff()'關閉它。 – tom10
好的,我試過gnuplot,速度更快,但我不得不花費一些時間來修補它 – Cubius