python - pyplot - savefig matplotlib
Guardar el archivo matplotlib en un directorio (6)
Además de las respuestas ya dadas, si desea crear un nuevo directorio, 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 entonces:
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))
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 mi elección?
import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(100))
fig.savefig(''graph.png'')
Aquí está la pieza de código que guarda la trama 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)
Aquí hay un ejemplo simple para guardar en un directorio (unidad usb externa) usando la versión 2.7.10 de Python con el editor de Sublime Text 2:
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)
De acuerdo con los docs savefig
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.
La forma más sencilla de hacerlo es la siguiente:
save_results_to = ''/Users/S/Desktop/Results/''
plt.savefig(save_results_to + ''image.png'', dpi = 300)
La imagen se guardará en el directorio save_results_to
con el nombre image.png
Si el directorio en el que desea guardar es un subdirectorio de su directorio de trabajo, simplemente especifique la ruta relativa antes de su nombre de archivo:
fig.savefig(''Sub Directory/graph.png'')
Si desea utilizar una ruta absoluta, importe el módulo os :
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 quiere preocuparse por la barra diagonal al frente del nombre del subdirectorio, puede unir las rutas de manera inteligente 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))