use $1 for name of file plt.savefig

Hi,

I am trying to use recursively a matplotlib script to create 650 plots.

For this, I have defined

cluster = loadtxt(sys.argv[1])
MBH = loadtxt ('./TrajectoryMBH.asc')

X_cl = cluster[:, 2] # Column 3
Y_cl = cluster[:, 3] # Column 4
Z_cl = cluster[:, 4] # Column 5

X_mbh = MBH[:, 2] # Column 3
Y_mbh = MBH[:, 3] # Column 4
Z_mbh = MBH[:, 4] # Column 5

because "cluster" is the file that changes. TrajectoryMBH.asc is
always the same file for all 650 plots

This way, I can run

./Hit_Cluster_MBH.py MYFILE_001.dat

and the script takes MYFILE_001.dat as "cluster".

Now, I would like matplotlib to produce the eps file automatically,
without any popup window.

For this, I usually define

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

and the, at the very bottom, instead of

show()

I have

plt.savefig('MyEPS.eps')

What I would like though is that matplotlib produces automatically

MYFILE_001.eps
MYFILE_002.eps

etc

when running the python script within a shell script such as

for file in $(ls *dat) ; do ; ./Hit_Cluster_MBH.py $file ; done

but I do not know how to do this in the

plt.savefig('MyEPS.eps')

part...

Obviously

plt.savefig('$file.eps')

does not work.

Any hint will be appreciated.

Thanks,

Pau

How about something like:

name, ext = sys.argv[1].split('.')
plt.savefig('%s.eps' % name)

···

On Thu, Apr 28, 2011 at 12:55 PM, Pau <vim.unix@...982...> wrote:

Hi,

I am trying to use recursively a matplotlib script to create 650 plots.

For this, I have defined

cluster = loadtxt(sys.argv[1])
MBH = loadtxt ('./TrajectoryMBH.asc')

X_cl = cluster[:, 2] # Column 3
Y_cl = cluster[:, 3] # Column 4
Z_cl = cluster[:, 4] # Column 5

X_mbh = MBH[:, 2] # Column 3
Y_mbh = MBH[:, 3] # Column 4
Z_mbh = MBH[:, 4] # Column 5

because "cluster" is the file that changes. TrajectoryMBH.asc is
always the same file for all 650 plots

This way, I can run

./Hit_Cluster_MBH.py MYFILE_001.dat

and the script takes MYFILE_001.dat as "cluster".

Now, I would like matplotlib to produce the eps file automatically,
without any popup window.

For this, I usually define

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

and the, at the very bottom, instead of

show()

I have

plt.savefig('MyEPS.eps')

What I would like though is that matplotlib produces automatically

MYFILE_001.eps
MYFILE_002.eps

etc

when running the python script within a shell script such as

for file in $(ls *dat) ; do ; ./Hit_Cluster_MBH.py $file ; done

but I do not know how to do this in the

plt.savefig('MyEPS.eps')

part...

Obviously

plt.savefig('$file.eps')

does not work.

Any hint will be appreciated.

Thanks,

Pau

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Also, if you do everything in Python instead of a shell script, the
whole process will take much less time. E.g.:

def generate_eps_file(pth):
    ...
    # generate your plot from specified file
    name, ext = pth.split('.')
    plt.savefig('%s.eps' % name)

import glob
files = glob.glob('*.dat')

for filepath in files:
    generate_eps_file(filepath)

···

On Thu, Apr 28, 2011 at 1:01 PM, Wes McKinney <wesmckinn@...287...> wrote:

On Thu, Apr 28, 2011 at 12:55 PM, Pau <vim.unix@...982...> wrote:

Hi,

I am trying to use recursively a matplotlib script to create 650 plots.

For this, I have defined

cluster = loadtxt(sys.argv[1])
MBH = loadtxt ('./TrajectoryMBH.asc')

X_cl = cluster[:, 2] # Column 3
Y_cl = cluster[:, 3] # Column 4
Z_cl = cluster[:, 4] # Column 5

X_mbh = MBH[:, 2] # Column 3
Y_mbh = MBH[:, 3] # Column 4
Z_mbh = MBH[:, 4] # Column 5

because "cluster" is the file that changes. TrajectoryMBH.asc is
always the same file for all 650 plots

This way, I can run

./Hit_Cluster_MBH.py MYFILE_001.dat

and the script takes MYFILE_001.dat as "cluster".

Now, I would like matplotlib to produce the eps file automatically,
without any popup window.

For this, I usually define

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

and the, at the very bottom, instead of

show()

I have

plt.savefig('MyEPS.eps')

What I would like though is that matplotlib produces automatically

MYFILE_001.eps
MYFILE_002.eps

etc

when running the python script within a shell script such as

for file in $(ls *dat) ; do ; ./Hit_Cluster_MBH.py $file ; done

but I do not know how to do this in the

plt.savefig('MyEPS.eps')

part...

Obviously

plt.savefig('$file.eps')

does not work.

Any hint will be appreciated.

Thanks,

Pau

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

How about something like:

name, ext = sys.argv[1].split('.')
plt.savefig('%s.eps' % name)

thanks!

···

On 28 April 2011 19:01, Wes McKinney <wesmckinn@...287...> wrote:

On Thu, Apr 28, 2011 at 12:55 PM, Pau <vim.unix@...982...> wrote:

Hi,

I am trying to use recursively a matplotlib script to create 650 plots.

For this, I have defined

cluster = loadtxt(sys.argv[1])
MBH = loadtxt ('./TrajectoryMBH.asc')

X_cl = cluster[:, 2] # Column 3
Y_cl = cluster[:, 3] # Column 4
Z_cl = cluster[:, 4] # Column 5

X_mbh = MBH[:, 2] # Column 3
Y_mbh = MBH[:, 3] # Column 4
Z_mbh = MBH[:, 4] # Column 5

because "cluster" is the file that changes. TrajectoryMBH.asc is
always the same file for all 650 plots

This way, I can run

./Hit_Cluster_MBH.py MYFILE_001.dat

and the script takes MYFILE_001.dat as "cluster".

Now, I would like matplotlib to produce the eps file automatically,
without any popup window.

For this, I usually define

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

and the, at the very bottom, instead of

show()

I have

plt.savefig('MyEPS.eps')

What I would like though is that matplotlib produces automatically

MYFILE_001.eps
MYFILE_002.eps

etc

when running the python script within a shell script such as

for file in $(ls *dat) ; do ; ./Hit_Cluster_MBH.py $file ; done

but I do not know how to do this in the

plt.savefig('MyEPS.eps')

part...

Obviously

plt.savefig('$file.eps')

does not work.

Any hint will be appreciated.

Thanks,

Pau

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

How about something like:

name, ext = sys.argv[1].split('.')
plt.savefig('%s.eps' % name)

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users