Matplotlib surface_plot色彩图被Nan&s?中毒了?

时间:2015-10-09 05:13:54

标签: 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)...(n,n)点= Nan)。

这揭示了我不喜欢的神器。表面绘图的多边形在区域的边界处绘制数据,而具有Nans的区域绘制明亮的红色多边形,这些多边形无视图表的颜色图。我附上了一张我的意思的图片,在这两种情况下,它都是一个丑陋而令人困惑的工件I have attached a picture of what I mean,  in both both cases it's an ugly and confusing artifact

有谁知道如何消除这种情况?

2 个答案:

答案 0 :(得分:0)

这是一项认真的工作,可能不是最有帮助的。但是可以转换您的域,以便您的有效值占用整个数组。把它想象成"拉伸你的数据"。这导致绘制实线。

它涉及制作你的x和y输入,然后使用scipy的interp2d来找到相应的z值。

我知道这是一个令人讨厌的解决方法,但这是我过去能够提出的最好的解决办法。

答案 1 :(得分:0)

对我而言,解决方案不是将NaN放在(0,0),(1,1)..(n,n)上,而是将它们设为零。其余的我仍然改为Nans。这消除了丑陋的红色撕裂。

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

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

enter image description here

相关问题