【问题标题】:Prevent anti-aliasing for imshow in matplotlib防止 matplotlib 中 imshow 的抗锯齿
【发布时间】:2012-01-12 16:18:34
【问题描述】:

当我使用 matplotlib 的 imshow() 方法来表示一个小的 numpy 矩阵时,它最终会在像素之间进行一些平滑处理。有什么办法可以禁用这个吗?这使我的数字在演示中具有误导性。

上图是一个 28x28 的图像,所以我应该看到代表每个像素的单色大方块(因为 matlab 在使用 imagesc() 时会显示它)。但相反,像素似乎与相邻像素模糊。有没有办法禁用这种行为?

【问题讨论】:

    标签: python numpy matplotlib scipy blurry


    【解决方案1】:

    你也可以试试这个功能

    matshow 
    

    哪个名称表明它完全符合您的要求 - 表示矩阵。 当您不需要过多地自定义图形时,它非常方便。

    顺便说一句,matplotlib 的最佳资源之一是他们的Gallery

    【讨论】:

      【解决方案2】:

      imshow 有一个插值选项,它控制如何以及是否将插值应用于矩阵的渲染。如果你尝试

      imshow(array, interpolation="nearest") 
      

      你可能会得到更多你想要的东西。举个例子

      A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
      imshow(A)
      

      对比

      A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
      imshow(A, interpolation="nearest")
      

      【讨论】:

      • 谢谢,这似乎有效。出于好奇,为什么将其称为“最近”插值?此页面上的文档:matplotlib.sourceforge.net/api/… 没有描述“最近”的作用。
      • 说实话,我不知道。在开发树中,现在还有一个 interpolation="none" 选项,它的作用几乎相同。 This example 提供了更多关于 interpolation="nearest" 试图实现的目标的信息。
      • 它可能试图从“最近的”邻居中取样?在显示像素附近
      • 确实是“最近邻”插值
      • @ChristopherDorian,迟了 4 年才来到这里,但最近和无之间的区别:matplotlib.org/examples/images_contours_and_fields/…
      猜你喜欢
      • 2011-12-07
      • 2014-02-18
      • 1970-01-01
      • 2016-06-28
      • 2011-07-05
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多