簡體   English   中英

基於使用 Matplotlib 的 3D 表面的某些閾值的條件顏色圖

[英]Conditional colormap based on some threshold value for 3D surfaces using Matplotlib

我有一些三維數據集,其中每個數據點的格式為(x,y,z) 我想制作一個 3D 圖,其中z以 3D 曲面的形式表示為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 z>z0 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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM