【问题标题】:Increase DPI of Matplotlib .show() in Jupyter Notebook在 Jupyter Notebook 中增加 Matplotlib .show() 的 DPI
【发布时间】:2019-01-26 23:24:11
【问题描述】:

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

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

【问题讨论】:

  • 你试过右键=>打开图片吗?它会打开它,您将获得更多详细信息。
  • 谢谢,这确实使它稍微好一点,但仍然比理想的分辨率更小/更低。

标签: python matplotlib jupyter-notebook


【解决方案1】:

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

这在大多数情况下都可以,但是如果您只需要为一个图形设置 DPI 值,您可以这样做:

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

【讨论】:

    【解决方案2】:

    在笔记本的开头添加这个:

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

    就是这样!

    【讨论】:

    • 对于现代显示器,我建议使用 600 DPI。否则它可能在您的手机或平板电脑上看起来像素化。
    • 也可以使用matplotlib.pyplot。即plt.rcParams[...]
    【解决方案3】:

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

    %config InlineBackend.figure_format = 'retina'
    

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

    【讨论】:

    • 嗯,视网膜显示屏和 Mac 一样?不幸的是,我在 PC 上执行此操作,添加该行似乎没有任何作用。
    • 甚至一些 Windows 笔记本电脑也有 Retina 显示屏。但是,如果对您没有帮助,那么您的屏幕就没有。您可以尝试提供更大的图形尺寸以放大图像
    • 真的真的很有帮助。
    • @Sheldore 你对 Spyder 有什么建议吗?此命令在我的 MacOS 中没有产生任何更改。
    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 2017-09-18
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多