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

Ale*_*x S 9 python matplotlib jupyter-notebook

我在Jupyter笔记本中使用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)
Run Code Online (Sandbox Code Playgroud)

问题是,虽然plt.savefig('test.png', dpi = 300)看起来很好(因为我将dpi更改为300),但笔记本中显示的图像分辨率很低,我无法在其上做任何事情,并且plt.imshow(img, dpi = 300)不起作用:

图像显示在笔记本中

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

非常感谢,Alex

回答:

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

import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 300
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题.

Vit*_*ile 26

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

这在大多数情况下都没有问题,但如果您只需要为一个图形设置 DPI 值,您可以按如下方式操作:

plt.imshow(img)
plt.gcf().set_dpi(300)
plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 您还可以通过“fig = plt.figure(dpi=100)”创建具有给定 dpi 的图形 (5认同)

pol*_*nsa 18

在笔记本的开头添加:

import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 300
Run Code Online (Sandbox Code Playgroud)

而已 !

  • 还可以使用“matplotlib.pyplot”。即“plt.rcParams[...]” (8认同)

She*_*ore 15

如果您的屏幕有Retina显示屏,请%matplotlib inline在笔记本中添加以下行(或绘图前的其他位置)

%config InlineBackend.figure_format = 'retina'
Run Code Online (Sandbox Code Playgroud)

这将增加您地块的显示分辨率的内 Jupyter笔记本.

  • 甚至一些 Windows 笔记本电脑也配备了 Retina 显示屏。但如果这对你没有帮助,那么你的屏幕上就没有这样的屏幕。您可以尝试提供更大的图形尺寸以获得放大的图像 (2认同)