Dear all
I have some binary files with names ('Den_car_resample' +'sdf'+ str(n)+'.dat') where n changes from 0 to 25.
I wrote a code to read these files and then plot the results with imshow command.
at the last step I want to create a movie . to do that, first, I saved the imshow plots in the .png Format and at the end of the program, I used the avconv command to stitch the images together .
unfortunately, my code creates a movie but it is empty. I don't know the reason exactly but I think, first, I have to define a frame to each plot and then create a movie.
now I have 2 questions:
1- would anyone please help me how can I finally create a movie with this code.
2- is there any method that without saving the figures, directly I create a movie??
here is the code:
I have some binary files with names ('Den_car_resample' +'sdf'+ str(n)+'.dat') where n changes from 0 to 25.
I wrote a code to read these files and then plot the results with imshow command.
at the last step I want to create a movie . to do that, first, I saved the imshow plots in the .png Format and at the end of the program, I used the avconv command to stitch the images together .
unfortunately, my code creates a movie but it is empty. I don't know the reason exactly but I think, first, I have to define a frame to each plot and then create a movie.
now I have 2 questions:
1- would anyone please help me how can I finally create a movie with this code.
2- is there any method that without saving the figures, directly I create a movie??
here is the code:
import os
import sys #exit the code at a specific line
import subprocess
import sdf
import numpy as np
import matplotlib.pyplot as plt
#import time
#import matplotlib.animation as animation
#from IPython import display
from matplotlib.font_manager import FontProperties
fp = FontProperties('Symbola')
##################### information from EPOCH input.deck
nx,ny= 1200, 1600
xmin=-100e-6
xmax = 110e-6
ymin = -200e-6
ymax = 200e-6
X =np.linspace(xmin,xmax,nx) #Generate linearly spaced vector. The spacing between the points is (x2-x1)/(n-1).
Y =np.linspace(ymin,ymax,ny)
#print len(X)
# print len(X)
#################
for n in range(0,5):
nstr = str(n)#.zfill(4)
#print nstr
######################..... reading Density of proton
filename ="Den_pro_resample" +'_sdf_'+ str(n)+'.dat'
with open(filename, 'rb') as f: #read binary file
data = np.fromfile(f, dtype='float64', count=nx*ny) #float64 for Double precision float numbers
Den_pro = np.reshape(data, [ny, nx], order='F')
Den_pro = np.log10(Den_pro )
#print Den_pro .max()
########################## Display proton density
plt.subplot(312)
fig2 = plt.imshow(Den_pro, extent=[X.min()*1e6, X.max()*1e6, Y.min()*1e6, Y.max()*1e6], vmin=24, vmax=30, cmap='brg', aspect='auto') #cmap='jet', 'nipy_spectral','hot','gist_ncar'
#plt.suptitle('Den_pro')
plt.title('sdf '+ str(n)+ '; Time= ' +str(n*50)+ 'ps',color='green', fontsize=15)
plt.xlabel('x($\mu$m)')
plt.ylabel('y($\mu$m)')
plt.text(-80,-40,'Den_proton',color='red', fontsize=15)
plt.colorbar()
#plt.savefig( 'fig%04d.png' % n, bbox_inches='tight') #('test'+ str(n)+ '.png')
plt.pause(.1)
plt.clf()
############ create a movie
avconv -framerate 1 -i fig%04d.png -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p movie.mp4".split()
#ffmpeg -r 10 -i fig%04d.png -pix_fmt yuv420p movie.mp4".split()
