matplotlib.pyplot.imshow中的工件

2024-09-21 03:26:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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)

结果图如下所示: enter image description here

您可以看到,两个较小的图显示了一条垂直线作为人工制品。这是matplotlib中的一个bug,还是实际需要的bug


Tags: fromimport绘图matplotlibasnpcmplt
1条回答
网友
1楼 · 发布于 2024-09-21 03:26:30

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

在Matplotlib中改进之前,您可以对此做些什么?不要在Matplotlib中减少采样是一个简单的答案-制作一个大的png,然后在后处理软件(如imagemagick)中重新采样

相关问题 更多 >

    热门问题