Question Enregistrer le fichier matplotlib dans un répertoire


Voici le code simple qui génère et enregistre une image de tracé dans le même répertoire que le code. Maintenant, existe-t-il un moyen de le sauvegarder dans le répertoire de votre choix?

import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(100))

fig.savefig('graph.png')

13
2017-07-07 08:48


origine


Réponses:


Selon le docs  savefig accepte un chemin de fichier, il vous suffit donc de spécifier un chemin complet (ou relatif) au lieu d’un nom de fichier.


11
2017-07-07 08:56



Si le répertoire dans lequel vous souhaitez enregistrer est un sous-répertoire de votre répertoire de travail, spécifiez simplement le chemin relatif avant votre nom de fichier:

    fig.savefig('Sub Directory/graph.png')

Si vous souhaitez utiliser un chemin absolu, importez le os module:

    import os
    my_path = os.path.abspath(__file__) # Figures out the absolute path for you in case your working directory moves around.
    ...
    fig.savefig(my_path + '/Sub Directory/graph.png')

Si vous ne voulez pas vous soucier de la barre oblique devant le nom du sous-répertoire, vous pouvez joindre les chemins intelligemment comme suit:

    import os
    my_path = os.path.abspath(__file__) # Figures out the absolute path for you in case your working directory moves around.
    my_file = 'graph.png'
    ...
    fig.savefig(os.path.join(my_path, my_file))        

10
2017-08-03 22:20



En plus des réponses déjà données, si vous souhaitez créer un nouveau répertoire, vous pouvez utiliser cette fonction:

def mkdir_p(mypath):
    '''Creates a directory. equivalent to using mkdir -p on the command line'''

    from errno import EEXIST
    from os import makedirs,path

    try:
        makedirs(mypath)
    except OSError as exc: # Python >2.5
        if exc.errno == EEXIST and path.isdir(mypath):
            pass
        else: raise

et alors:

import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(100))

# Create new directory
output_dir = "some/new/directory"
mkdir_p(output_dir)

fig.savefig('{}/graph.png'.format(output_dir))

1
2017-08-04 12:56



Voici le morceau de code qui enregistre le tracé dans le répertoire sélectionné. Si le répertoire n'existe pas, il est créé.

import os
import matplotlib.pyplot as plt

script_dir = os.path.dirname(__file__)
results_dir = os.path.join(script_dir, 'Results/')
sample_file_name = "sample"

if not os.path.isdir(results_dir):
    os.makedirs(results_dir)

plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.savefig(results_dir + sample_file_name)

1
2017-12-06 15:55



Voici un exemple simple pour enregistrer dans un répertoire (lecteur USB externe) en utilisant Python version 2.7.10 avec l'éditeur Sublime Text 2:

import numpy as np 
import matplotlib.pyplot as plt

X = np.linspace(-np.pi, np.pi, 256, endpoint = True)
C, S = np.cos(X), np.sin(X)

plt.plot(X, C, color = "blue", linewidth = 1.0, linestyle = "-")
plt.plot(X, S, color = "red", linewidth = 1.0, linestyle = "-")

plt.savefig("/Volumes/seagate/temp_swap/sin_cos_2.png", dpi = 72)

1
2018-05-02 09:47



le manière la plus simple pour ce faire, procédez comme suit:


save_results_to = '/Users/S/Desktop/Results/'
plt.savefig(save_results_to + 'image.png', dpi = 300)

L'image va être enregistrée dans le save_results_to répertoire avec nom image.png


0
2018-05-06 15:59