Ich habe matplotlib zum Zeichnen einiger experimenteller Ergebnisse verwendet (hier besprochen: Durchlaufen von Dateien und Plotten . Das Speichern des Bildes durch Klicken auf das Bild rechts führt jedoch zu Bildern mit sehr schlechter Qualität und niedriger Auflösung.
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()
Beispieldiagramm dessen, wonach ich suche: Beispieldiagramm
python
matplotlib
esilik
quelle
quelle
plt.savefig(fname + 'Graph1.png')
undplt.savefig(fname + 'Graph2.png')
Verwenden Sie
plt.figure(dpi=1200)
vor allen Ihrenplt.plot...
und am Ende verwendenplt.savefig(...
: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure und http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefigquelle
Sie können Ihr Diagramm als SVG speichern, um eine verlustfreie Qualität zu erzielen:
import matplotlib.pylab as plt x = range(10) plt.figure() plt.plot(x,x) plt.savefig("graph.svg")
quelle
plt.savefig("graph.pdf")
was ebenfalls verlustfrei istFür zukünftige Leser, die diese Frage beim Versuch gefunden haben, hochauflösende Bilder von matplotlib so wie ich zu speichern, habe ich einige der obigen und anderen Antworten ausprobiert und sie hier zusammengefasst.
Bestes Ergebnis :
plt.savefig('filename.pdf')
und dann konvertieren Sie dieses PDF in ein PNG in der Befehlszeile, damit Sie es in Powerpoint verwenden können:
pdftoppm -png -r 300 filename.pdf filename
Weniger erfolgreicher Test Nr. 1 :
plt.savefig('filename.png', dpi=300)
Dadurch wird das Bild zwar etwas höher als die normale Auflösung gespeichert, es ist jedoch nicht hoch genug für Veröffentlichungen oder Präsentationen. Bei Verwendung eines dpi-Werts von bis zu 2000 werden bei Nahaufnahme immer noch unscharfe Bilder erzeugt.
Weniger erfolgreicher Test Nr. 2 :
plt.savefig('filename.pdf')
Dies kann nicht in Microsoft Office Professional Plus 2016 (also kein Powerpoint) wie bei Google Slides geöffnet werden.
Weniger erfolgreicher Test Nr. 3 :
plt.savefig('filename.svg')
Dies kann auch nicht in Powerpoint oder Google Slides mit demselben Problem wie oben geöffnet werden.
Weniger erfolgreicher Test Nr. 4 :
plt.savefig('filename.pdf')
und dann Konvertieren in PNG in der Befehlszeile:
convert -density 300 filename.pdf filename.png
aber aus der Nähe betrachtet ist dies immer noch zu verschwommen.
Weniger erfolgreicher Test Nr. 5 :
plt.savefig('filename.pdf')
und Öffnen in GIMP und Exportieren als qualitativ hochwertiges PNG (Erhöhung der Dateigröße von ~ 100 KB auf ~ 75 MB)
Weniger erfolgreicher Test Nr. 6 :
plt.savefig('filename.pdf')
und dann in der Befehlszeile in JPEG konvertieren:
pdfimages -j filename.pdf filename
Dies führte zu keinen Fehlern, aber auch nach Änderung einiger Parameter zu keiner Ausgabe unter Ubuntu.
quelle
Zum Speichern des Diagramms:
matplotlib.rcParams['savefig.dpi'] = 300
Zum Anzeigen des Diagramms bei Verwendung von
plt.show()
:matplotlib.rcParams["figure.dpi"] = 100
Fügen Sie sie einfach oben hinzu
quelle
Am Ende Ihrer for () - Schleife können Sie die
savefig()
Funktion anstelle von plt.show () verwenden und den Namen, die Auflösung und das Format Ihrer Figur festlegen.ZB 1000 dpi und eps Format sind eine ziemlich gute Qualität, und wenn Sie jedes Bild im Ordner ./ mit den Namen 'Sample1.eps', 'Sample2.eps' usw. speichern möchten, können Sie einfach den folgenden Code hinzufügen:
for fname in glob("./*.txt"): # Your previous code goes here [...] plt.savefig("./{}.eps".format(fname), bbox_inches='tight', format='eps', dpi=1000)
quelle