问题描述
在 matplotlib 3d-plotting plot_surface
中,即使 x、y 和 z 轴限制设置为 >=0,表面的负 z 部分仍然被绘制。二维绘图不会发生同样的情况——如果在为绘图提供的 20 个数据点中,有 10 个位于轴限制之外,例如第一象限,它们根本不会显示在绘图中。
请看下面的代码和相应的情节作为证据(代码在 Jupyter notebook 中运行)-
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
from matplotlib import cm
%matplotlib notebook
x = np.linspace(0,1.5,100)
y = np.linspace(0,100)
X,Y = np.meshgrid(x,y)
Z = 1-X-Y
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
surf = ax.plot_surface(X,Y,Z,cmap=cm.coolwarm)
ax.set_xlim(0,1.5)
ax.set_ylim(0,1.5)
ax.set_zlim(0,3)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
fig.colorbar(surf,shrink=0.5,aspect=5)
fig.savefig('Question10fig')
蓝色以及旁边的颜色条的存在表明图中存在 z