为 Z 值大于 python 裁剪表面
Cropping a surface in python for Z values greater than
所以我得到了一个函数的 3D 曲面图,它代表了一些真实数据。 Z 轴上任何大于 8.5 的值在物理上都是不可能的,因此我想将它们从我的图中删除。我一直在努力做到这一点,任何帮助将不胜感激:
我想将大于 8 的值(大部分红色)设置为 NaN,但是当我尝试这样做时,绘图似乎是空的。我做了一些谷歌搜索,发现冲浪图不喜欢 NaN 的(显然)并且想知道这里是否有人可以提供帮助!
代码:
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(1.0,101.0,1.0)
Y = np.arange(1.0,4.1, 0.04)
X, Y = np.meshgrid(X, Y)
Z = ((0.3973473*(np.exp(np.log10(X)))) + 0.6176893) * Y
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
今天用一双新的眼睛设法做到了:
qt = np.linspace(1.0, 100.0, num=100)
ic = np.linspace(1.0, 4.0, num=100)
qt, ic = np.meshgrid(qt, ic)
Z = ((0.3973473*(np.exp(np.log10(qt)))) + 0.6176893) * ic
for i in np.arange(len(qt)):
for j in np.arange(len(ic)):
if Z[j,i] > 8:
Z[j,i] = np.nan
else:
pass
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(qt, ic, Z)
plt.show()
所以我得到了一个函数的 3D 曲面图,它代表了一些真实数据。 Z 轴上任何大于 8.5 的值在物理上都是不可能的,因此我想将它们从我的图中删除。我一直在努力做到这一点,任何帮助将不胜感激:
我想将大于 8 的值(大部分红色)设置为 NaN,但是当我尝试这样做时,绘图似乎是空的。我做了一些谷歌搜索,发现冲浪图不喜欢 NaN 的(显然)并且想知道这里是否有人可以提供帮助!
代码:
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(1.0,101.0,1.0)
Y = np.arange(1.0,4.1, 0.04)
X, Y = np.meshgrid(X, Y)
Z = ((0.3973473*(np.exp(np.log10(X)))) + 0.6176893) * Y
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
今天用一双新的眼睛设法做到了:
qt = np.linspace(1.0, 100.0, num=100)
ic = np.linspace(1.0, 4.0, num=100)
qt, ic = np.meshgrid(qt, ic)
Z = ((0.3973473*(np.exp(np.log10(qt)))) + 0.6176893) * ic
for i in np.arange(len(qt)):
for j in np.arange(len(ic)):
if Z[j,i] > 8:
Z[j,i] = np.nan
else:
pass
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(qt, ic, Z)
plt.show()