我正在尝试使用matplotlob.pyplot.imshow为函数绘制颜色图。但是,根据绘图的大小,我会得到一条垂直线作为工件
生成绘图的代码为:
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)
结果图如下所示:
您可以看到,两个较小的图显示了一条垂直线作为人工制品。这是matplotlib中的一个bug,还是实际需要的bug
这是matplotlib的下采样算法的结果,该算法发生在数据空间中,在您的例子中,一对包含[359,1]的像素的平均值为180,然后得到青色线。这是https://github.com/matplotlib/matplotlib/issues/18735,我们正在为其研究一种允许RGB空间下采样(以及)的解决方案
在Matplotlib中改进之前,您可以对此做些什么?不要在Matplotlib中减少采样是一个简单的答案-制作一个大的png,然后在后处理软件(如imagemagick)中重新采样
相关问题 更多 >
编程相关推荐