web-dev-qa-db-fra.com

Matplotlib - Comment tracer un graphique haute résolution?

J'ai utilisé matplotlib pour tracer des résultats expérimentaux (expliqué ici: Boucle sur des fichiers et traçage . Cependant, enregistrer l'image en cliquant à droite sur l'image donne des images de très mauvaise qualité/basse résolution.

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

Exemple de graphique de ce que je recherche: exemple de graphique

24
esilik

Vous pouvez utiliser savefig() pour exporter dans un fichier image:

plt.savefig('filename.png')

De plus, vous pouvez spécifier l'argument dpi avec une valeur scalaire, par exemple:

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

Vous pouvez enregistrer votre graphique au format svg pour une qualité sans perte:

import matplotlib.pylab as plt

x = range(10)

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

utilisez plt.figure(dpi=1200) avant tout votre plt.plot... et à la fin utilisez plt.savefig(... voir: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figure et http: // matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig

7
Ophir Carmi

À la fin de votre boucle pour () , vous pouvez utiliser la fonction savefig() au lieu de plt.show () et définir le nom, la résolution et le format de votre figure. 

Par exemple. Le format 1000 dpi et le format eps sont de bonne qualité. Si vous souhaitez enregistrer chaque image dans le dossier ./ avec les noms 'Sample1.eps', 'Sample2.eps', etc., vous pouvez simplement ajouter le code suivant. :

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

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