2012-07-07 18 views
13

Ecco il semplice codice che genera e salva un'immagine della trama nella stessa directory del codice. Ora, c'è un modo attraverso il quale posso salvarlo nella directory di scelta?Salvare il file matplotlib in una directory

import matplotlib 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(range(100)) 

fig.savefig('graph.png') 

risposta

11

Secondo il docssavefig accetta un percorso di file, quindi tutto quello che serve è quello di specificare un percorso completo (o relativa) al posto di un nome di file.

9

Se la directory che si desidera salvare è un sotto-directory della vostra directory di lavoro, è sufficiente specificare il percorso relativo prima del nome del file:

fig.savefig('Sub Directory/graph.png') 

Se si desidera utilizzare un percorso assoluto, importare il os modulo:

import os 
    my_path = os.path.abspath(__file__) # Figures out the absolute path for you in case your working directory moves around. 
    ... 
    fig.savefig(my_path + '/Sub Directory/graph.png') 

se non si vuole preoccupare lo slash iniziale davanti al nome della sottodirectory, è possibile unire i percorsi in modo intelligente nel modo seguente:

import os 
    my_path = os.path.abspath(__file__) # Figures out the absolute path for you in case your working directory moves around. 
    my_file = 'graph.png' 
    ... 
    fig.savefig(os.path.join(my_path, my_file))   
0

Oltre alle risposte già date, se si vuole creare una nuova directory, è possibile utilizzare questa funzione:

def mkdir_p(mypath): 
    '''Creates a directory. equivalent to using mkdir -p on the command line''' 

    from errno import EEXIST 
    from os import makedirs,path 

    try: 
     makedirs(mypath) 
    except OSError as exc: # Python >2.5 
     if exc.errno == EEXIST and path.isdir(mypath): 
      pass 
     else: raise 

e poi:

import matplotlib 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(range(100)) 

# Create new directory 
output_dir = "some/new/directory" 
mkdir_p(output_dir) 

fig.savefig('{}/graph.png'.format(output_dir)) 
1

ecco il pezzo di codice che salva trama nella directory selezionata. Se la directory non esiste, viene creata.

import os 
import matplotlib.pyplot as plt 

script_dir = os.path.dirname(__file__) 
results_dir = os.path.join(script_dir, 'Results/') 
sample_file_name = "sample" 

if not os.path.isdir(results_dir): 
    os.makedirs(results_dir) 

plt.plot([1,2,3,4]) 
plt.ylabel('some numbers') 
plt.savefig(results_dir + sample_file_name) 
1

Ecco un semplice esempio da salvare in una cartella (disco esterno USB) utilizzando Python versione 2.7.10 con Sublime Text 2 Editore:

import numpy as np 
import matplotlib.pyplot as plt 

X = np.linspace(-np.pi, np.pi, 256, endpoint = True) 
C, S = np.cos(X), np.sin(X) 

plt.plot(X, C, color = "blue", linewidth = 1.0, linestyle = "-") 
plt.plot(X, S, color = "red", linewidth = 1.0, linestyle = "-") 

plt.savefig("/Volumes/seagate/temp_swap/sin_cos_2.png", dpi = 72) 
0
plt.plot(x,y) 
plt.savefig('___fullpath____/figure.jpg') 
plt.show() 

utilizzare per favore "___fullpath____" da proprietà della cartella

Problemi correlati