webentwicklung-frage-antwort-db.com.de

Matplotlib - Wie zeichnet man eine Grafik mit hoher Auflösung?

Ich habe Matplotlib für das Plotten einiger experimenteller Ergebnisse verwendet (hier besprochen: Durchlaufen von Dateien und Plotten . Wenn Sie das Bild jedoch durch Klicken mit der rechten Maustaste auf das Bild speichern), erhalten Sie eine sehr schlechte Bildqualität.

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

Beispielgrafik von was ich suche: Beispielgrafik

24
esilik

Sie können savefig() zum Exportieren in eine Bilddatei verwenden:

plt.savefig('filename.png')

Darüber hinaus können Sie das Argument dpi mit einem Skalarwert angeben.

plt.savefig('filename.png', dpi=300)
39
Ohad Eytan

Sie können Ihre Grafik als svg für eine verlustfreie Qualität speichern:

import matplotlib.pylab as plt

x = range(10)

plt.figure()
plt.plot(x,x)
plt.savefig("graph.svg")
11
JMat

verwenden Sie plt.figure(dpi=1200) vor allen Ihren plt.plot... und am Ende verwenden Sie plt.savefig(...: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure und http : //matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig

7
Ophir Carmi

Am Ende Ihrer for () - Schleife können Sie anstelle von plt.show () die Funktion savefig() verwenden und den Namen, das dpi und das Format Ihrer Figur einstellen. 

Z.B. 1000 dpi und das EPS-Format sind eine gute Qualität, und wenn Sie jedes Bild im Ordner ./ mit den Namen 'Sample1.eps', 'Sample2.eps' usw. speichern möchten, fügen Sie einfach folgenden Code hinzu :

for fname in glob("./*.txt"):
    # Your previous code goes here
    [...]

    plt.savefig("./{}.eps".format(fname), bbox_inches='tight', format='eps', dpi=1000)
0
Jalo