He usado matplotlib para trazar algunos resultados experimentales (lo discutimos aquí: recorrer archivos y trazar . Sin embargo, guardar la imagen haciendo clic derecho a la imagen da imágenes de muy mala calidad / baja resolución.
from glob import glob
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
# loop over all files in the current directory ending with .txt
for fname in glob("./*.txt"):
# read file, skip header (1 line) and unpack into 3 variables
WL, ABS, T = np.genfromtxt(fname, skip_header=1, unpack=True)
# first plot
plt.plot(WL, T, label='BN', color='blue')
plt.xlabel('Wavelength (nm)')
plt.xlim(200,1000)
plt.ylim(0,100)
plt.ylabel('Transmittance, %')
mpl.rcParams.update({'font.size': 14})
#plt.legend(loc='lower center')
plt.title('')
plt.show()
plt.clf()
# second plot
plt.plot(WL, ABS, label='BN', color='red')
plt.xlabel('Wavelength (nm)')
plt.xlim(200,1000)
plt.ylabel('Absorbance, A')
mpl.rcParams.update({'font.size': 14})
#plt.legend()
plt.title('')
plt.show()
plt.clf()
Gráfico de ejemplo de lo que estoy buscando: gráfico de ejemplo
python
matplotlib
esilik
fuente
fuente

plt.savefig(fname + 'Graph1.png')yplt.savefig(fname + 'Graph2.png')use
plt.figure(dpi=1200)antes de todoplt.plot...y al final,plt.savefig(...consulte: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure y http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefigfuente
Puede guardar su gráfico como svg para una calidad sin pérdidas:
import matplotlib.pylab as plt x = range(10) plt.figure() plt.plot(x,x) plt.savefig("graph.svg")fuente
plt.savefig("graph.pdf")que también no tiene pérdidasPara los futuros lectores que encontraron esta pregunta mientras intentaban guardar imágenes de alta resolución de matplotlib como yo, probé algunas de las respuestas anteriores y en otros lugares, y las resumí aquí.
Mejor resultado :
plt.savefig('filename.pdf')y luego convertir este pdf a png en la línea de comando para que pueda usarlo en powerpoint:
pdftoppm -png -r 300 filename.pdf filenamePrueba menos exitosa # 1 :
plt.savefig('filename.png', dpi=300)Esto guarda la imagen a una resolución un poco más alta que la normal, pero no es lo suficientemente alta para la publicación o algunas presentaciones. El uso de un valor de ppp de hasta 2000 aún produce imágenes borrosas cuando se ve de cerca.
Prueba menos exitosa # 2 :
plt.savefig('filename.pdf')Esto no se puede abrir en Microsoft Office Professional Plus 2016 (por lo tanto, no en PowerPoint), lo mismo con Google Slides.
Prueba menos exitosa # 3 :
plt.savefig('filename.svg')Esto tampoco se puede abrir en PowerPoint o Google Slides, con el mismo problema que el anterior.
Prueba menos exitosa # 4 :
plt.savefig('filename.pdf')y luego convertir a png en la línea de comando:
convert -density 300 filename.pdf filename.pngpero esto todavía es demasiado borroso cuando se ve de cerca.
Prueba menos exitosa # 5 :
plt.savefig('filename.pdf')y abrir en GIMP, y exportar como png de alta calidad (aumentó el tamaño del archivo de ~ 100 KB a ~ 75 MB)
Prueba menos exitosa # 6 :
plt.savefig('filename.pdf')y luego convertir a jpeg en la línea de comando:
pdfimages -j filename.pdf filenameEsto no produjo ningún error, pero no produjo una salida en Ubuntu incluso después de cambiar varios parámetros.
fuente
Para guardar el gráfico:
matplotlib.rcParams['savefig.dpi'] = 300Para mostrar el gráfico cuando usa
plt.show():matplotlib.rcParams["figure.dpi"] = 100Solo agrégalos en la parte superior
fuente
Al final de su ciclo for () , puede usar la
savefig()función en lugar de plt.show () y establecer el nombre, dpi y formato de su figura.Por ejemplo, el formato de 1000 dpi y eps es de buena calidad, y si desea guardar todas las imágenes en la carpeta ./ con los nombres 'Sample1.eps', 'Sample2.eps', etc., simplemente puede agregar el siguiente código:
for fname in glob("./*.txt"): # Your previous code goes here [...] plt.savefig("./{}.eps".format(fname), bbox_inches='tight', format='eps', dpi=1000)fuente