2011-01-27 35 views
1

我想绘制一些在x-y平面上投影的iso等级曲线的函数f(x,y)=(x + 2)* y^2。我使用的代码是这样的:Matplotlib v0.99具有轮廓的曲面:zdir不起作用

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平面。

任何想法? 在此先感谢

+0

我不认为`zdir`的确如你所想的那样。试试`zdir ='x'`并看看结果。 `offset'定义了投影平面的位置。如果不是x-y平面,你希望投影到哪个表面上? – Paul 2011-01-27 17:07:57

回答

3

你的代码适合我(matplotlib 1.0.1)。 enter image description here

btw:看来this例子被添加到matplotlib 1.0库中。也许这是以前版本的问题?

+0

这就是我想要做的。我想我应该安装1.0.1版本 – Stelios 2011-01-27 17:37:27

2

zdir定义项目的方向。 (沿x轴zdir='x'项目)offset定义了平面的位置要被投影(沿zdir定义的轴)

Example

我要去猜你想要的是:

cset=plt.contour(X,Y,Z,zdir='z',offset=30) 
0

- > xs和ys:这些是x和y轴的坐标 - > zs:这是z轴的值。它可以是所有点或每个点的一个 - > zdir:这将选择什么将是z轴的尺寸(通常这是zs,但可以 是xs或ys)