繁体   English   中英

matplotlib.pyplot.imshow 中的神器

[英]Artifact in matplotlib.pyplot.imshow

我正在尝试使用 matplotlob.pyplot.imshow 制作 function 的彩色图。 但是,根据 plot 的大小,我会得到一条垂直线作为伪影。

生成 plot 的代码是:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
from matplotlib import cm

def double_vortex(X,Y):
    return np.angle((X + 25)+1j*Y) - np.angle((X - 25)+1j*Y)

X = np.arange(-50,50)
Y = np.arange(-50,50)

X, Y = np.meshgrid(X, Y)
phi0_vortex = double_vortex(X,Y)
 
fig = plt.figure(figsize=(16,8)) 
gs = gridspec.GridSpec(1, 3, width_ratios=[2.5, 1.5,1]) 
for i in range(3):
    ax = plt.subplot(gs[i])
    ax.imshow(phi0_vortex % (2*np.pi), cmap=cm.hsv, vmin=0, vmax=2*np.pi)

生成的 plot 是这样的:在此处输入图像描述

您可以看到两个较小的图显示一条垂直线作为人工制品。 这是 matplotlib 中的错误还是实际上可以预期的错误?

这是 matplotlib 的下采样算法的结果,该算法发生在数据空间中,在您的情况下,一对像素中包含 [359, 1] 的像素平均为 180,您会得到青色线。 这是https://github.com/matplotlib/matplotlib/issues/18735 ,我们正在研究一种允许 RGB 空间下采样(以及)的解决方案。

在 Matplotlib 改进之前,你能做些什么呢? 不要在 Matplotlib 中下采样是简单的答案 - 制作一个大 png,然后在 imagemagick 等后处理软件中重新采样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM