Python等高线,
嗨,我有一组数据,我需要用3D绘图。
为此我用了matplotlibs plot_surface,因为我的一些数据值很大,而大部分数据值很小。
I和E的最大峰值为0.7,次大峰值为0.15。
所以我需要使用某种非线性的颜色映射,否则小细节会完全模糊。在
所以我尝试了下面的非线性颜色映射来创建source: classnlcmap (object):
def __init__(自身,cmap,级别):
self.cmap=cmap #原始颜色图
自我。N=cmap。普通
self . levels=numpy . as array(levels,dtype=float64 )
自我。_x=自我水平
self.levmax=self.levels.max()
自我。_y=numpy.linspace(0.0,self.levmax,len(self.levels))
def __call__(自我,xi,alpha=1.0,**kw):
yi=numpy.interp(,self。_x,自我。_y)
return self.cmap(yi/self.levmax,alpha)
要为3D等高线图创建自定义颜色图,请执行以下操作:
^{pr2}$
但是我得到了一个错误:
提升值错误("无法识别的色彩映射表% s"% name ")
错误:Colormaplt;Main不识别0x 06 e 81 af 0gt;位于的nlcmap对象。"
好吧,这个自定义色彩映射表无法识别,但我真的不想改变matplotlib代码来强迫它接受这个色彩映射表。在
曲面图的非线性颜色映射还有其他的获取方法吗?在
编辑:
使用标准化和预先存在的彩色地图解决了我最初的问题,
但我只有一张三维等高线图,离散层次很少。
创建一个自定义的颜色图或者使用一个预先存在的颜色图会给我带来一定程度的离散化问题。
我可以使用标准化:matplotlib . colors . normalize(vmin=numpy . Amin(z),VMAX=0.05)
当使用灰色映射时,非常大的数据值被强制转换为白色。
那么剩余的数据点仅用6个离散化级别来着色。这个时候我至少需要~20个数据才能说清楚。在
有什么办法可以改变三维等高线图的离散化程度?在
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。