2016-03-08 4 views
5

In meinem aktuellen iPython werden Matplotlib-Plots inline angezeigt. Ich wollte eine Möglichkeit, Bilder mit bestimmten Pixelgrößen anzuzeigen, da ich normalerweise nur mit Pixeln arbeite und nichts ausdrucke.IPython und Inline Matplotlib Abbildung Größen

PPI Mein Bildschirm ist 208, so lief ich diese 2 Stück Code:

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

Was ich bin verwirrt, ist dies: Wenn ich my_fig.png untersuchen, ist es in der Tat 2000 Pixel von 1000 Pixel, Das ist was ich will. Auch gemäß https://stackoverflow.com/a/7912007/582917 haben die DPI-Einstellungen für das Rendern auf dem Anzeigegerät und das Rendern einer Datei andere Standardwerte. Deshalb muss ich auch dpi=208 zur plt.savefig Funktion hinzufügen.

Allerdings ist das Bild auf dem iPython-Notebook, das im Browser ist, viel kleiner. Mit meinem Browser-Lineal sind es ungefähr 600 mal 300 Pixel.

Mit der gleichen DPI für beide Funktionen, warum ist das inline gerenderte Bild in iPython Notebook so klein, während mein gespeichertes Bild in der richtigen Auflösung, die ich will?

Beachten Sie, dass ich iPython in einer Virtualbox (das ist auch kopflos) laufen, ich bin mir nicht sicher, ob dies Unterschiede verursachen kann.

Nach ein paar Versuchen und Fehlern, um die richtige Größe für Inline-Rendering zu schließen, musste die Zahl dpi 58 sein. Aber selbst dann die inline erzeugten Bilder stimmen nicht genau mit meiner angegebenen Pixelanzahl überein. Es ist immer + - 10 bis 20 Pixel.

+0

haben Sie gleiche Bildschirmauflösung/Definition auf der VM? – pltrdy

+0

Die VM ist kopflos. – CMCDragonkai

Antwort

0

Dies liegt möglicherweise daran, dass %matplotlib inline standardmäßig bbox_inches='tight' an plt.figure(...) übergeben wird. Probieren Sie folgendes

Nach %matplotlib inline Aufruf tun %config InlineBackend.print_figure_kwargs = {'bbox_inches':None} dann Plot erstellen. Hier ist, was es für mich getan hat:

Vor Before

Nach After