Matplotlib v0.99 轮廓图:zdir 不起作用
我正在尝试绘制一个函数 f(x,y)=(x+2)*y^2,并在 x-y 平面上显示一些等高线。为此,我使用了以下代码:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FixedLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import axes3d, Axes3D
import pylab as p
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(0, 2.5, 0.1)
Y = np.arange(0, 2.5, 0.1)
X, Y = np.meshgrid(X, Y)
Z = ((X+2))*(Y**2)
surf = ax.plot_surface(X, Y, Z,rstride=1, cstride=1, alpha=0.3, cmap=cm.jet)
cset=plt.contour(X,Y,Z,zdir='z',offset=0)
ax.clabel(cset, fontsize=9, inline=1)
ax.set_zlim3d(0, 30)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
我的问题是,zdir 这个参数没有起作用,也就是说,等高线显示在了表面上,而不是在 x-y 平面上。
有没有什么建议?谢谢!
3 个回答
0
-> xs 和 ys:这些是 x 轴和 y 轴的坐标。
-> zs:这是 z 轴的值。可以是所有点的一个值,也可以是每个点各自的值。
--> zdir:这个选项用来选择 z 轴的维度(通常是 zs,但也可以是 xs 或 ys)。
2
zdir
是用来定义投影方向的。比如说,zdir='x'
就是沿着 x 轴进行投影。offset
则是用来定义要投影到的平面的位置,这个位置是沿着 zdir
所定义的轴来的。
我猜你想要的是:
cset=plt.contour(X,Y,Z,zdir='z',offset=30)
3