我想为表达式做一个三维曲面图:z = y^2/x,对于区间[-2,2]中的x和区间[-1.4,1.4]中的y。我还希望Z值范围从-4到4.Python/matplotlib mplot3d-如何为z轴设置最大值?
问题是,当我查看完成的曲面图时,z轴值不停在[-4,4]处。
所以我的问题是如何从完成的图中“移除”在intervall [-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()
有没有更好的办法去做这个?在查看图表时,以某种方式“切除”[-4,4]范围之外的z值? – user605243 2011-02-06 15:28:15
@ user605243:原则上,您应该可以使用masked_array,就像使用2D图一样。在实践中,它似乎并不奏效(虽然在axes3d.py中进行必要的更改让它看起来并不令人畏惧)。不幸的是,我实际上无法让np.nan技巧工作,但有很多“ CGPathCloseSubpath:没有当前点。“错误。 – DSM 2011-02-06 15:54:43