首页 > 解决方案 > 将矩阵绘制为 cimg 对象时如何关闭平滑/模糊

问题描述

我正在尝试绘制这种棋盘格模式:

checker_pattern <- rbind(c(1/3, 2/3),
                         c(2/3, 1/3))
plot(imager::as.cimg(checker_pattern))

根据这个网站http://www.sumsar.net/blog/2019/01/image-dithering-in-r/,我们应该得到以下结果,这也是我想要的:

在此处输入图像描述

但是,我得到这个结果运行完全相同的代码:

在此处输入图像描述

为什么 R 似乎模糊或平滑了图中的颜色?如何关闭这种模糊?

一个类似的问题(R mschart turn off line smoothing)提到了缩放。我不知道这是否给我们提供了在这种情况下的线索。

标签: rplot

解决方案


回答

interpolate参数设置为FALSE(此外,rescale设置为FALSE):

plot(imager::as.cimg(checker_pattern), interpolate = FALSE, rescale = FALSE)

在此处输入图像描述

基本原理

这与 R 无关,与imager包(或者更确切地说,cimg对象)有关。您正在创建一个对象的类cimg,然后进行激发plot.cimg。该函数有一个interpolate参数,默认为TRUE. 然后将其馈送到as.raster下游的函数中,该函数应用插值。通过设置interpolate = FALSE您可以消除此效果。

按照相同的过程,我发现plot.cimg也有一个rescale参数,默认为TRUE. 将其设置为FALSE正确显示颜色。

您可以通过键入 找到有关此功能的更多信息?plot.cimg


推荐阅读