Python Matplotlib曲面(u plot colormap被Nan毒害';s

Python Matplotlib曲面(u plot colormap被Nan毒害';s,python,matplotlib,Python,Matplotlib,我有一个3d matplotlib曲面图。Z轴是标准偏差(介于-4和+4之间)。我制作了一个颜色贴图,使-4=红色、0白色和+4绿色 cmap1 = LinearSegmentedColormap.from_list("my_colormap", ((1, 0, 0),(1,.25,.25),(1,1,1), (0.25,1,0.25),(0, 1, 0)), N=15, gamma=1.0) 它工作得很好。但现在我删除了数据的一半冗余值,但将下三角矩阵转换为NaN(以及(1,1)(2,2)…

我有一个3d matplotlib曲面图。Z轴是标准偏差(介于-4和+4之间)。我制作了一个颜色贴图,使-4=红色、0白色和+4绿色

cmap1 = LinearSegmentedColormap.from_list("my_colormap", ((1, 0, 0),(1,.25,.25),(1,1,1), (0.25,1,0.25),(0, 1, 0)), N=15, gamma=1.0)
它工作得很好。但现在我删除了数据的一半冗余值,但将下三角矩阵转换为NaN(以及(1,1)(2,2)…(n,n)点=NaN)

这揭示了一个我不喜欢的人工制品。曲面图在具有数据的区域边界处绘制的多边形和具有NaN的区域给出了与图表的彩色贴图不同的鲜红色多边形。我附上了我的意思的图片,在这两种情况下,这都是一个丑陋和令人困惑的人工制品


有人知道我怎样才能消除这个吗

这是一项严肃的工作,可能不是最有用的。但是可以转换域,使有效值占据整个数组的一部分。可以将其视为“扩展数据”。这将导致绘制一条实线

它包括制作x和y输入,然后使用scipy的interp2d找到相应的z值


我知道这是一个糟糕的解决办法,但这是我过去在紧要关头能想到的最好办法。

这是一个严肃的解决办法,可能不是最有用的。但是可以转换域,使有效值占据整个数组的一部分。可以将其视为“扩展数据”。这将导致绘制一条实线

它包括制作x和y输入,然后使用scipy的interp2d找到相应的z值


我知道这是一个糟糕的解决办法,但这是我过去在紧要关头能想到的最好办法。

对我来说,解决办法不是将NaN沿(0,0),(1,1)…(n,n)放置,而是我将这些0设置为零。剩下的我还是换成了南斯。这消除了难看的红色撕裂

而不是
raw[np.tril_索引(raw.shape[0],-1)]=np.nan

我使用了
raw[np.tril_索引(raw.shape[0],0)]=np.nan


对我来说,解决方案不是将NaN沿(0,0)、(1,1)…(n,n)放置,而是将这些零放置。剩下的我还是换成了南斯。这消除了难看的红色撕裂

而不是
raw[np.tril_索引(raw.shape[0],-1)]=np.nan

我使用了
raw[np.tril_索引(raw.shape[0],0)]=np.nan


另一种方法是屏蔽值而不是将其设置为NaN;另一种方法是屏蔽值而不是将其设置为NaN