编辑:请看tom10的答案。他的解决方案是将排除部分的值设置为np.南斯. 在
matplotlib的plot_surface似乎不接受np.南斯作为坐标,这样也行不通。如果我正确地理解了您的问题,那么我至少可以提供一种胶带解决方案:
如果不是像MEVIS3000建议的那样将“切出”点设置为零,而是将它们设置为该维度中的最后一个值,则二维数组的大小都相同,曲面看起来就像在那里切割的一样。在
我在您的示例中添加了一些数据点以使其更清楚。这是起点(整个曲面可见):import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
X = np.array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
])
Y = np.array([[0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2],
])
Z = np.array([[0.5, 0.4, 0.35, 0.32, 0.312, 0.3],
[0.9, 0.7, 0.60, 0.55, 0.525, 0.5],
[1.0, 1.1, 1.20, 1.30, 1.400, 1.5],
])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X,Y,Z)
plt.show()
生成的曲面如下所示(从上方看):
现在,如果我们调整数组,以便用该行中以前的值替换“缺少的”值,则可以忽略曲面的一部分:
^{pr2}$
生成的图表如下所示(同样来自同一视图):
这不是一个很好的解决办法,但这是一种办法。我会给你留下一个自动化“切断”的问题。在