[英]Conditional colormap based on some threshold value for 3D surfaces using Matplotlib
我有一些三維數據集,其中每個數據點的格式為(x,y,z)
。 我想制作一個 3D 圖,其中z
以 3D 曲面的形式表示為x
和y
的函數。 為此,我使用以下代碼:
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<z0
和z>z0
的不同顏色圖,例如z<z0
的增強紅色顏色圖和 z z>z0
z0 的綠色顏色圖。
如何使用matplotlib
實現這一目標?
我根據這個答案找到了我的案例的解決方案: Defining the midpoint of a colormap in matplotlib 。 我們定義一個以z0
為中心的顏色圖范數,然后我們選擇從綠色到紅色的配色方案RdYlGn
,其中X, Y, Z
是numpy.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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.