On Wed, Jul 29, 2009 at 6:09 PM, John Hunter <jdh2...@gmail.com> wrote:
> On Wed, Jul 29, 2009 at 6:50 PM, Art<grenan...@gmail.com> wrote:
>
> > My bottleneck now is actually saving the pngs for mencoder to make into
> an
> > avi (as with the movie_demo example on your site) using savefig. Do you
> also
> > know of an alternative way of generating an avi of the animation? My
> > animation has about 9000 frames.
>
> No, I can't imagine there is much fat to trim in that part of the
> code. We're using libpng to write the png, so no speedups there
> unless you can make the pngs smaller. It looks like we are using a
> memory pointer to get the rgba data from agg over to png, so no
> speedups there either. Perhaps Michael has some input. Some code
> that we could run and test might help produce some further
> optimizations.
>
> JDH
>
Below is some sample code that creates the directory ~/tmp/blit_test,
outputs 50 pngs, and creates a mov.avi using /usr/local/bin/mencoder.
Apologies in advance for the code:
import os
import numpy as np
import matplotlib.pyplot as plt
import subprocess
movdir = os.path.join(os.path.expanduser('~'), 'tmp', 'blit_test')
try: os.mkdirs(movdir)
except: pass
mencoder = '/usr/local/bin/mencoder'
ax = []
im = []
vl = []
fig = plt.figure()
ax.append(fig.add_subplot(2,2,1))
im.append(ax[-1].imshow(np.random.randn(100,100)))
ax[-1].set_xticks([])
ax[-1].set_yticks([])
ax.append(fig.add_subplot(2,2,2))
im.append(ax[-1].imshow(np.random.randn(32,32)))
ax[-1].set_xticks([])
ax[-1].set_yticks([])
ax.append(fig.add_subplot(2, 1, 2))
r = np.abs(np.random.normal(0,0.1,1000))
for i in range(100):
ras = np.nonzero(np.random.poisson(r))[0]
ax[-1].scatter(ras, np.ones(len(ras)) * (i+1), s=1, alpha=0.5)
vl.append(ax[-1].axvline(-1, color='r', alpha=0.9, linewidth=2.))
ax[-1].set_xlim([0,1000])
ax[-1].set_ylim([0,100])
plt.draw()
canvas = fig.canvas
background = canvas.copy_from_bbox(fig.bbox)
for i in range(50):
canvas.restore_region(background)
im[0].set_data(np.random.randn(100,100))
ax[0].draw_artist(im[0])
im[1].set_data(np.random.randn(32,32))
ax[1].draw_artist(im[1])
vl[0].set_xdata([i,i])
ax[2].draw_artist(vl[0])
canvas.blit()
plt.savefig(os.path.join(movdir, '%03d' % (i+1)))
fps = 10
command = (mencoder,
'mf://%s/*.png' % (movdir),
#'-vf', 'scale=800:-10',
'-mf', 'fps=%d' % fps,
'-ovc', 'lavc',
'-lavcopts', 'vcodec=mpeg4',
'-o', os.path.join(movdir, 'mov.avi'))
subprocess.check_call(command)
# output in ~/tmp/blit_test/mov.avi
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users