2015-11-19 50 views
6

Ho un codice Python per creare una figura. Dopo averlo mostrato con plt.show(), voglio salvare la figura.
Per evitare di compromettere le proporzioni, la risoluzione, ecc., Non voglio utilizzare il comando savefig nel codice. Invece, voglio usare il pulsante "salva la figura" dalla finestra della figura.
Tuttavia, per impostazione predefinita, richiede la cartella principale come posizione per il salvataggio. Vorrei che il salvataggio fosse automaticamente nella directory in cui è stato eseguito il codice.
Come/dove posso modificare questo percorso predefinito della finestra per il salvataggio nella cartella corrente (o altrove)?Come modificare il percorso predefinito per "salvare la figura" in python?

Ho provato questo comando dalla Change directory to the directory of a Python script all'inizio, ma non ha aiutato, anche se dà il nome del file in modo corretto:

os.chdir(os.path.dirname(__file__)) 

risposta

6

Sembra che si può essere in grado di impostare questo modificando il file delle impostazioni predefinite matplotlibrc, controllare la guida sotto http://matplotlib.org/users/customizing.html dove le linee importanti sono sotto i parametri savefig:

# the default savefig params can be different from the display params 

... 

savefig.directory : ~  # default directory in savefig dialog box, 
           # leave empty to always use current working directory 

sembra this è stato introdotto nel matplo tlib 1.3. Credo che si potrebbe impostare questo usando,

mpl.rcParams["savefig.directory"] = os.chdir(os.path.dirname(__file__)) 

nella parte superiore di uno script o modificando il file matplotlibrc. Sto ancora usando mpl 1.1.1 quindi non posso testare, mi dispiace.

+0

fantastico! ora funziona. Non ho potuto sistemarlo modificando il matplotrc ma poi l'ultimo comando mi ha aiutato, con il piccolo cambiamento che devo mettere: ... = "path-to-my-folder". in qualche modo il os.chdir non ha funzionato. PS: davvero bello dare un'occhiata alle impostazioni di matplotrc. Ora posso cambiare anche molte altre cose – physiker

+0

Ciao @physiker, felice di aver sentito che funzionava. Mi chiedo se sia addirittura possibile impostare percorsi di file dinamici del modulo che si desidera nel file 'matplotrc'. Se è semplicemente eseguito come uno script quando viene importato matplotlib, presumo che tu possa "importare os" e usare qualcosa come "os.chdir". In uno script, il comando 'os.chdir (os.path.dirname (__ file __))' dovrebbe restituire una stringa valida come una "path-to-my-folder", a meno che non mi sia sfuggito qualcosa. .. –

+0

Ciao @Ed Smith, in realtà "path-to-my-folder" era solo "." Che è ingenuamente dinamico! Proverò di più con il tuo suggerimento e se riuscirò, ti riporterò. Grazie a – physiker