在Python

时间:2015-05-19 20:57:45

标签: python matplotlib plot 3d surface

我正在尝试使用Python创建一个圆柱形3D曲面图,其中我的自变量为ztheta,因变量为radius(即radius }是垂直位置和方位角的函数。 到目前为止,我只能找到创建3D表面图的方法:

  • z作为rtheta

  • 的函数
  • r作为z的函数,但不会随theta而变化(因此,最终产品看起来像一个旋转的轮廓;例如, r = sin(z) + 1)。

我希望将r作为z theta的函数,因为我的函数将生成一个在任何给定高度,将是theta的复杂函数。 最重要的是,我需要表面图能够(但必须具有,取决于函数的属性)开放的顶部或底部。例如,如果rz = 0z = 1(一个完美的圆柱体)不变,我会想要一个只包含圆柱体侧面而不是顶部或底部。情节应该看起来像一个空壳。

我已经定义了函数r

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

显然,经过一些反复试验,在这种情况下,最好/最简单的做法就是转换rthetaz数据点(定义为二维数组,就像x,y,z图一样)进入笛卡尔坐标:

# convert to rectangular
x = r*numpy.cos(theta)
y = r*numpy.sin(theta)
z = z

可以像从x,y,zx,y,z的函数的多项式生成的任何其他z数组一样绘制新的x,y数组。我原本以为数据点会因为重叠z值而被搞砸,或者相邻的数据点可能无法正确连接,但显然情况并非如此。