2016-03-08 12 views
5

Nel mio attuale iPython, i grafici matplotlib vengono visualizzati in linea. Volevo un modo per visualizzare immagini con dimensioni di pixel specifiche, in quanto di solito utilizzo solo i pixel e non stampo nulla.Dimensioni figure Mattylotlib in linea e IPython

mio PPI schermo è 208, così mi sono imbattuto questi 2 pezzi di codice:

plt.figure(figsize=(2000/float(208), 1000/float(208)), dpi=208) 
# other code here... 
plt.savefig('my_fig.png', dpi=208) 

Quello che mi sono confuso circa è questo: quando esamino my_fig.png, in realtà è 2000 pixel per 1000 pixel, questo è quello che voglio. Inoltre, in base allo https://stackoverflow.com/a/7912007/582917, le impostazioni DPI per il rendering sul dispositivo di visualizzazione e il rendering di un file hanno valori predefiniti diversi. Ecco perché devo aggiungere anche dpi=208 alla funzione plt.savefig.

Tuttavia l'immagine visualizzata sul notebook iPython, che si trova nel browser, è molto più piccola. Usando il mio righello del browser, è approssimativamente 600 per 300 pixel.

Utilizzando lo stesso DPI per entrambe le funzioni, perché l'immagine di rendering inline nel notebook iPython è così piccola, mentre l'immagine salvata ha la risoluzione corretta che desidero?

Nota che eseguo iPython in una Virtualbox (anch'essa senza testa), non sono sicuro che ciò possa causare differenze.

Dopo alcuni tentativi ed errori, per ottenere la dimensione corretta per il rendering in linea, la cifra dpi doveva essere 58. Ma anche allora le immagini generate in linea non corrispondono esattamente al mio numero di pixel specificato. È sempre + da 10 a 20 pixel.

+0

ti hanno una risoluzione dello schermo stesso/definizione sul VM? – pltrdy

+0

La VM è senza testa. – CMCDragonkai

risposta

0

Ciò potrebbe essere dovuto al fatto che per impostazione predefinita %matplotlib inline passa a a plt.figure(...). Effettuate la seguente

Dopo aver chiamato %matplotlib inline, fare %config InlineBackend.print_figure_kwargs = {'bbox_inches':None} quindi creare il vostro diagramma. Ecco quello che ha fatto per me:

Prima Before

Dopo After

Problemi correlati