在Jupyter Notebook中增加Matplotlib .show()的DPI

时间:2018-08-20 19:32:06

标签: python matplotlib jupyter-notebook

我正在Jupyter Notebook中使用Matplotlib来显示地图图像。代码如下:

%matplotlib inline

imgpath = './map.png'

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

from PIL import Image

img = Image.open(imgpath)
print(img.size)

width, height = img.size
# img.thumbnail((width * 2,height * 2), Image.ANTIALIAS)  # resizes image in-place
imgplot = plt.imshow(img)
plt.savefig('test.png', dpi = 300)

问题是,尽管plt.savefig('test.png', dpi = 300)看起来不错(因为我将dpi更改为300),但笔记本中显示的图像分辨率太低,无法在其中显示任何内容,并且{{1 }}不起作用:

Image displayed in notebook

所以我想知道是否有办法改变Jupyter Notebook中显示的图像的分辨率?

非常感谢Alex

答案:

Politinsa建议我将其添加到文件的开头:

plt.imshow(img, dpi = 300)

它可以解决问题。

3 个答案:

答案 0 :(得分:11)

在笔记本的开始处添加它:

import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 300

就是这样!

答案 1 :(得分:9)

如果您的屏幕具有Retina显示屏,请在笔记本中[ActionName("Contact2")]之后(或绘图之前的其他位置)添加以下行

%matplotlib inline

这将提高Jupyter笔记本中地物的显示分辨率。

答案 2 :(得分:3)

使用 this answer 中提出的解决方案存在将 DPI 应用于将在笔记本中创建的所有其他图形的缺点。

这在大多数情况下是没问题的,但如果你只需要为一个数字设置 DPI 值,你可以这样做:

plt.imshow(img)
plt.gcf().set_dpi(300)
plt.show()