2012-04-12 10 views
6

Non riesco a trovare nessun altro con questo problema. In matplotlib, puoi visualizzare i tuoi grafici usando show() o savefig(). Questi generano immagini leggermente diverse; nel mio caso, l'immagine savefig() è più brutta e difficile da capire. Ho bisogno di semplificare la vita per il mio esaminatore, quindi ..matplotlib, savefig: l'impostazione DPI viene ignorata

Ho trovato alcuni argomenti che suggerivano di impostare la dimensione DPI in modo che corrisponda a quella di show(). Ho provato:

-> Impostazioni savefig.dpi direttamente con matplotlib.rcParams [ 'savefig.dpi'] = 80.

-> Impostazioni savefig.dpi direttamente in ~/.matplotlib/matplotlibrc.

-> Spostamento del file rc su CWD.

-> Infine, utilizzando savefig ('image.pdf', dpi = 80)

posso verificare che l'attributo è infatti sempre impostato; ma sembra che l'impostazione sia stata salvata da savefig(). Qualcuno può aiutare con questo?

(semplificato) codice:

plt.bar(ind, functimes, yerr=stddev, bottom=0, width=barWidth, align='center', color='b') 

ax = plt.gca() 
ax.legend(barRcts, barLegend) 
plt.title("Function Call Overhead") 
plt.xlabel("Function ID") 
plt.ylabel("Execution Time [us]") 

plt.xticks(ind, funcNames) 
figtest.autofmt_xdate() 

plt.savefig(out_file, dpi=80, format='pdf') 
+5

'matplotlib' salva i file' pdf' in formato vettoriale. A meno che non ci siano immagini bitmap, DPI è piuttosto privo di significato in un'immagine vettoriale poiché è indipendente dalla risoluzione. – Avaris

+1

Aha, ho capito. Quindi non c'è modo di salvare le immagini pdf con savefig() in modo che siano identiche a quelle che è possibile salvare (manualmente) con show()? – memstick

+5

Dovrebbero essere identici. L'unica differenza potrebbe essere se ridimensioni la figura prima di salvarla. Ma puoi anche impostare la dimensione della tua figura ('figure ((larghezza, altezza))') e 'savefig' la userà. – Avaris

risposta

3

risparmio PDF utilizza l'impostazione DPI per risoluzione di immagine all'interno del PDF, non per una risoluzione di linea/poligono (che è insignificante in un formato vettoriale).

Se si è soddisfatti dell'output sullo schermo e non è necessario disporre di un grafico scalabile, è probabile che il salvataggio come png sia corretto.

+0

Ma nota che se hai usato 'contourf' (per esempio) ottieni un'immagine raster all'interno del tuo pdf/svg, quindi dpi è di nuovo significativo. –

+0

@ChrisH - Non sono d'accordo. Contourf produce output vettoriale non raster. imshow tuttavia produce un'immagine in modo che (dalla memoria) esista un'immagine dpi per aiutare. HTH – pelson

+1

si scopre che hai ragione - secondo il mio 5.5 MB .svg che rallenta inkscape a una ricerca per indicizzazione assoluta. Quindi le impostazioni dpi aiutano a ottenere la larghezza di riga giusta per gli assi e le linee sovrapposte. Me ne ero reso conto qualche tempo fa ma ho dimenticato di accedere e aggiornare. –

Problemi correlati