2016-03-08 79 views
5

在我当前的iPython中,matplotlib图是以行内显示的。我想要一种显示具有特定像素大小的图像的方式,因为我通常只使用像素,而不打印任何东西。IPython和Inline Matplotlib图尺寸

我的屏幕PPI为208,所以我跑这2段代码:

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

我感到困惑的是这样的:2000像素×1000个像素。当我审视my_fig.png,它实际上是,这就是我要的。同样根据https://stackoverflow.com/a/7912007/582917,用于呈现到显示设备和呈现文件的DPI设置具有不同的默认值。这就是为什么我还需要在dpi=208中添加plt.savefig函数。

但是,在浏览器中的iPython笔记本上呈现的图像要小得多。使用我的浏览器标尺,大概是600×300像素。

对于这两种功能使用相同的DPI,为什么iPython笔记本中的内嵌渲染图像非常小,而我保存的图像处于我想要的正确分辨率?

请注意,我在虚拟机中运行iPython(这也是无头的),我不确定这是否会导致任何差异。

经过一些试验和错误,为了获得正确的内联渲染大小,数字dpi需要为58.但即使如此,内联生成的图像与我指定的像素数并不完全匹配。它总是+ - 10到20像素。

+0

后你有没有在虚拟机上相同的屏幕分辨率/定义? – pltrdy

+0

虚拟机是无头的。 – CMCDragonkai

回答

0

这可能是由于%matplotlib inline默认会通过bbox_inches='tight'plt.figure(...)。 尝试以下,

调用%matplotlib inline后,做 %config InlineBackend.print_figure_kwargs = {'bbox_inches':None} 然后创建你的阴谋。下面是它为我做的:

以前 Before

After