2012-07-07 81 views
13

Aquí está el código simple que genera y guarda una imagen de trazado en el mismo directorio que el código. Ahora, ¿hay alguna manera de guardarlo en el directorio de su elección?Guarde el archivo matplotlib en un directorio

import matplotlib 
import matplotlib.pyplot as plt 

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

fig.savefig('graph.png') 

Respuesta

11

De acuerdo con la docssavefig acepta una ruta de archivo, por lo que todo lo que necesita es especificar una ruta completa (o relativa) en lugar de un nombre de archivo.

9

Si el directorio que desea guardar en un subdirectorio del directorio de trabajo, sólo tiene que especificar la ruta relativa antes de que su nombre de archivo:

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

Si desea utilizar una ruta absoluta, importe el os módulo:

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') 

Si no quieren preocuparse por la barra inicial frente al nombre de subdirectorio, puede unirse de forma inteligente caminos de la siguiente manera:

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

Además de las respuestas ya dadas, si desea crear un nuevo directorio, se puede usar esta función:

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 

y luego:

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

Aquí está la pieza de código que guarda el diagrama en el directorio seleccionado. Si el directorio no existe, se crea.

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

Aquí está un ejemplo sencillo para guardar en un directorio (unidad USB externa) usando Python versión 2.7.10 con Sublime Text 2 Editor:

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() 

por favor utilice "___fullpath____" de propiedades de la carpeta

Cuestiones relacionadas