Saving multiple plots

matplotlib, python

Solution

All you have to do is provide unique filenames. You could use a counter:

fileNameTemplate = r'C:\documents\Plot{0:02d}.png'

for subdir,dirs,files in os.walk(rootdir):
    for count, file in enumerate(files):
        # Generate a plot in `pl`
        pl.savefig(fileNameTemplate.format(count), format='png')
        pl.clf()  # Clear the figure for the next loop

What I did:

Create a template using python's string formatting syntax

Added a counter to the loop using the `enumerate()` function.

Used the counter and the template to generate a new filename for each plot.

Problem

i have this code to produce multiple plots from all the text files in a folder. It runs perfectly fine and shows the plots but i cant work out how to then save them all. ``` import re import numpy as np import matplotlib.pyplot as plt import pylab as pl import os rootdir='C:\documents\Neighbors for each search id' for subdir,dirs,files in os.walk(rootdir): for file in files: f=open(os.path.join(subdir,file),'r') print file data=np.loadtxt(f) #plot data pl.plot(data[:,1], data[:,2], 'gs') #Put in the errors pl.errorbar(data[:,1], data[:,2], data[:,3], data[:,4], fmt='ro') #Dashed lines showing pmRa=0 and pmDec=0 pl.axvline(0,linestyle='--', color='k') pl.axhline(0,linestyle='--', color='k') pl.show() f.close() ``` I have previously used ``` fileName="C:\documents\FirstPlot.png" plt.savefig(fileName, format="png") ``` but i think this just saves each graph into one file and overwrites the last one.

Original source