matplotlib 增加plt.show()的DPI

s4chpxco  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(194)

我在Jupyter Notebook中使用Matplotlib来显示Map的图像。代码看起来像这样:

%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),但笔记本中显示的图像分辨率太低,我无法在上面做出任何事情,并且plt.imshow(img, dpi = 300)无法工作:

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

ubby3x7f

ubby3x7f1#

在笔记本的开头添加以下内容:

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

就是这样!

gxwragnw

gxwragnw2#

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

%config InlineBackend.figure_format = 'retina'

这将提高 * Jupyter Notebook中的图 * 的显示分辨率。

z4iuyo4d

z4iuyo4d3#

使用this answer中提出的解决方案的缺点是将DPI应用于将在笔记本中创建的所有其他图形。
在大多数情况下,这是很好的,但如果您需要仅为一个图形设置DPI值,则可以按以下方式执行:

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

相关问题