2016-10-05 4 views
11

ich matplotlib zum Plotten einige experimentelle Ergebnisse verwendet haben (diskutiert hier in:. Sehr schlechte Qualität/Bilder mit niedriger Auflösung Looping over files and plotting Allerdings gibt das Bild Speichern von rechts auf das Bild klickenMatplotlib - Wie zeichnet man eine Grafik mit hoher 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() 

Beispiel grafische Darstellung von. was ich suche: example graph

Antwort

13

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

plt.savefig('filename.png') 

Darüber hinaus können Sie festlegen, das dpi Argument skalaren Wert, zum Beispiel:

import matplotlib.pylab as plt 

x = range(10) 

plt.figure() 
plt.plot(x,x) 
plt.savefig("graph.svg") 
+0

Außer, dass er höhere Auflösung benötigt, so müssen Sie die "dpi = einige_Wert" – roganjosh

+0

@roganjosh nur hinzugefügt. –

+0

Ich kann den Dateinamen nicht angeben. Das Skript durchläuft Dateien in 'fname in glob ("./*. Txt"). – esilik

3

Verwendung plt.figure(dpi=1200) vor allen plt.plot... und am Ende Verwendung plt.savefig(... sehen:

plt.savefig('filename.png', dpi = 300) 
+0

@deepfriedcyanide \t half mir in meiner alten Frage mit den Worten: "_The Dateinamen Argument für Savefig ist nur eine Zeichenfolge, so dass Sie etwas tun können: plt.savegig ('Ordner/Datei% d.png'% n) mit einem dass du nach jedem Plot aufzählst._ " Aber ich bekomme noch nicht die Idee. Wo sollte ich diese Codes in mein Skript einfügen und wie? – esilik

+0

Verwenden Sie 'plt.savefig' anstelle von' plt.show' –

0

Am Ende Ihres für() Schleife, können Sie die savefig() Funktion anstelle von plt.show() verwenden und den Namen, dpi und das Format Ihrer Figur festlegen.

z. 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) 
Verwandte Themen