IPython和内嵌Matplotlib图形尺寸

IPython和内嵌Matplotlib图形尺寸,python,matplotlib,ipython,jupyter-notebook,Python,Matplotlib,Ipython,Jupyter Notebook,在我当前的iPython中,matplotlib绘图以内联方式显示。我想要一种显示特定像素大小图像的方法,因为我通常只处理像素,不打印任何内容 我的屏幕PPI是208,所以我运行了以下两段代码: plt.figure(figsize=(2000/float(208), 1000/float(208)), dpi=208) # other code here... plt.savefig('my_fig.png', dpi=208) 我感到困惑的是:当我检查my_fig.png,它实际上是200

在我当前的iPython中,matplotlib绘图以内联方式显示。我想要一种显示特定像素大小图像的方法,因为我通常只处理像素,不打印任何内容

我的屏幕PPI是208,所以我运行了以下两段代码:

plt.figure(figsize=(2000/float(208), 1000/float(208)), dpi=208)
# other code here...
plt.savefig('my_fig.png', dpi=208)
我感到困惑的是:当我检查
my_fig.png
,它实际上是2000像素乘以1000像素,这就是我想要的。此外,根据DPI设置,用于渲染到显示设备和渲染文件的默认设置也不同。这就是为什么我还必须在
plt.savefig
函数中添加
dpi=208

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

对于这两个函数使用相同的DPI,为什么iPython笔记本中的内联渲染图像如此小,而我保存的图像具有我想要的正确分辨率

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


经过几次尝试和错误后,为了接近内联渲染的正确大小,图形dpi需要为58。但即使这样,内联生成的图像也与我指定的像素数不完全匹配。它总是+-10到20像素。

这可能是因为默认情况下,
%matplotlib inline
将通过
bbox\u inches='tight'
plt.figure(…)
。 试试下面的方法

调用
%matplotlib inline
后,执行以下操作
%config InlineBackend.print_figure_kwargs={'bbox_inches':None}
然后创建您的绘图。以下是它为我所做的:

之前

之后

虚拟机上的屏幕分辨率/定义是否相同?