基于使用 Matplotlib 的 3D 表面的某些阈值的条件颜色图

丹尼尔·奥利瓦

我有一些三维数据集,其中每个数据点的形式是(x,y,z)我想制作一个 3D 图,以 3D 曲面的形式z表示为 和 的函数xy为此,我使用以下代码:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection='3d')
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='viridis',edgecolor='none')
plt.show()

现在,我有一个基线点(x0,y0,z0),并且我希望将曲面的颜色图定义为 的函数z0更具体地说,我想要一个不同的颜色图z<z0z>z0,例如一个增强的红色颜色图z<z0和一个绿色的颜色图z>z0

我怎样才能做到这一点matplotlib

丹尼尔·奥利瓦

我根据这个答案找到了我的案例的解决方案:Defining the midpoint of a colormap in matplotlib我们定义了一个以颜色图为中心的范数,然后我们选择从绿色到红色z0配色方案RdYlGn,其中X, Y, Znumpy.ndarrays

minz = min(Z.flatten()) 
maxz = max(Z.flatten())
cnorm = plt.colors.TwoSlopeNorm(vmin=minz, vcenter=z0, vmax=maxz)

ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='RdYlGn',norm=cnorm,edgecolor='none')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章