我正在尝试制作一个三维表面图,表达式为:z = y^2/x,其中x在区间[-2,2],y在区间[-1.4,1.4]。我还希望z值的范围从-4到4。
问题是,当我查看完成的表面图时,z轴值并没有停留在[-4,4]。
所以我的问题是如何从完成的图中“删除”超出区间[-4,4]的z轴值?
我的代码是:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection="3d")
x = np.arange(-2.0,2.0,0.1,float) # x in interval [-2,2]
y = np.arange(-1.4,1.4,0.1,float) # y in interval [-1.4,1.4]
x,y = np.meshgrid(x,y)
z = (y**2/x) # z = y^2/x
ax.plot_surface(x, y, z,rstride=1, cstride=1, linewidth=0.25)
ax.set_zlim3d(-4, 4) # viewrange for z-axis should be [-4,4]
ax.set_ylim3d(-2, 2) # viewrange for y-axis should be [-2,2]
ax.set_xlim3d(-2, 2) # viewrange for x-axis should be [-2,2]
plt.show()
set_zlim
对你有效?我使用的是1.3.1版本,当我使用set_zlim
或set_zlim3d
函数时,它只是限制了坐标轴的范围,但实际上并没有截断数据。 - KobeJohn