我正在尝试使用Python创建一个圆柱形3D曲面图,其中我的自变量为z
和theta
,因变量为radius
(即radius
}是垂直位置和方位角的函数。
到目前为止,我只能找到创建3D表面图的方法:
z
作为r
和theta
r
作为z
的函数,但不会随theta
而变化(因此,最终产品看起来像一个旋转的轮廓;例如, r = sin(z) + 1
)。
我希望将r
作为z
和 theta
的函数,因为我的函数将生成一个在任何给定高度,将是theta
的复杂函数。
最重要的是,我需要表面图能够(但不必须具有,取决于函数的属性)开放的顶部或底部。例如,如果r
从z = 0
到z = 1
(一个完美的圆柱体)不变,我会想要一个只包含圆柱体侧面而不是顶部或底部。情节应该看起来像一个空壳。
我已经定义了函数r
。
感谢您的帮助!
答案 0 :(得分:1)
显然,经过一些反复试验,在这种情况下,最好/最简单的做法就是转换r
,theta
和z
数据点(定义为二维数组,就像x,y,z
图一样)进入笛卡尔坐标:
# convert to rectangular
x = r*numpy.cos(theta)
y = r*numpy.sin(theta)
z = z
可以像从x,y,z
是x,y,z
的函数的多项式生成的任何其他z
数组一样绘制新的x,y
数组。我原本以为数据点会因为重叠z
值而被搞砸,或者相邻的数据点可能无法正确连接,但显然情况并非如此。