matplotlib 如何设置z轴的最大值?

llew8vvj  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(135)

我正在尝试为表达式绘制一个三维曲面图:z = y^2/x,对于区间[-2,2]中的x和区间[-1]中的y。我还希望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()
zzwlnbp8

zzwlnbp81#

我也有同样的问题,仍然没有找到比裁剪我的数据更好的东西。不幸的是,在我的情况下,我绑定到matplotlib 1。2.1.但万一你可以升级到版本1.3.0你可以有一个解决方案:似乎有一堆与轴范围相关的新API。特别是,您可能对“set_zlim”感兴趣。
编辑1:管理迁移我的环境使用matplotlib 1.3.0; set_zlim工作起来很有魅力:)
下面的代码对我有效(顺便说一下,我在OSX上运行这个,我不确定这有什么影响?)):

# ----------------------------------------------------------------------------
# Make a 3d plot according to data passed as arguments  
def Plot3DMap( self, LabelX, XRange, LabelY, YRange, LabelZ, data3d ) :
    fig = plt.figure()
    ax = fig.add_subplot( 111, projection="3d" )
    xs, ys =  np.meshgrid( XRange, YRange )
    surf = ax.plot_surface( xs, ys, data3d )
    ax.set_xlabel( LabelX )
    ax.set_ylabel( LabelY )
    ax.set_zlabel( LabelZ )
    ax.set_zlim(0, 100)
    plt.show()
iswrvxsc

iswrvxsc2#

裁剪你的数据可以完成这一点,但它不是很漂亮。

z[z>4]= np.nan
z[z<-4]= np.nan
wf82jlnq

wf82jlnq3#

与使用ax.plot_surface相比,我发现ax.plot_trisurf工作得很好,因为您不需要像ax.plot_surface那样为它提供一个矩形网格。如果你使用numpy数组,你可以使用下面的技巧来只选择z边界内的点。

from matplotlib import cm

x, y, z = x.flatten(), y.flatten(), z.flatten()
usable_points = (-4 < z) & (z < 4)
x, y, z = x[usable_points], y[usable_points], z[usable_points]
ax.plot_trisurf(x, y, z, cmap=cm.jet)

相关问题