如何消除matplotlib(pyplot)中的平滑?

问题描述 投票:0回答:1

我正在使用 PyPlot 的 Julia 实现做一些颜色图。我希望该图形没有任何插值或平滑,并且我希望将其保存为 svg,以便其他人以后可以对其进行操作。在 Jupyter 笔记本中,它会按照我想要的方式显示,如果我将其保存为 png,它就会按照我想要的方式保存。但如果我将其保存为 svg,颜色图就会被平滑,这对于我的数据来说显然是错误的。 代码是:

figure(figsize=(7.0, 5.5))
PyPlot.xlim(1,64)
PyPlot.ylim(1,64)
otraimagen=imshow(EjemploModificado, cmap="bwr", interpolation="none", origin="lower", vmin=-limites, vmax=limites, extent=[1,64,1,64])
use_gridspace='True')
use_gridspec="True",fraction=0.045 )
tick_params(axis="both", labelsize=14)   
xlabel("electrode number", fontsize=14)
ylabel("electrode number", fontsize=14)
savefig("CSD-Neg-Pos-$t.png", dpi=90) 
PyPlot.close_queued_figs()

生成的图像为 png:

以及 svg(后来转换为 png,这样我就可以在这里上传它):

matplotlib graphics julia
1个回答
2
投票

就其价值而言,除了 @FelipeLema 提到的 SVG 特定问题之外,还有一点您应该注意。

interpolation='none'
interpolation='nearest'
之间有区别。它主要适用于矢量格式,您将使用查看器生成显示在屏幕上的光栅化版本(例如 PDF、SVG)。

这里的 matplotlib 示例中有一个很好的视觉摘要: http://matplotlib.org/examples/images_contours_and_fields/interpolation_none_vs_nearest.html 在这种情况下,我们主要讨论的是“小图像放大”部分示例。

interpolation='none'
告诉查看者不需要特定的插值类型。对于 matplotlib 生成的光栅图像,它将是最近插值。对于某些 PDF 查看器来说,这是最接近的,而对于其他查看器来说,它是双线性或其他平滑插值器。

但是,

interpolation='nearest'
指定您特别需要最近邻插值。

我不记得 SVG 查看器在这方面的行为是否与 PDF 查看器类似,但即使@FelipeLema 提到的错误已修复,您也可能不会在所有带有

interpolation='none'
的 SVG 查看器中看到最近邻插值.

© www.soinside.com 2019 - 2024. All rights reserved.