在 Python 中绘制 3D 圆柱曲面图
Plotting a 3D Cylindrical Surface plot in Python
我正在尝试使用 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
(一个完美的圆柱体)是常数,我想要一个只包含圆柱体侧面的曲面图,而不是顶部或底部。该图应该看起来像一个空心的 shell.
我已经定义了函数r
。
感谢您的帮助!
显然,经过一些试验和错误后,best/easiest 在这种情况下要做的事情就是转换 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
值重叠而搞砸,或者相邻的数据点可能无法正确连接,但显然事实并非如此。
我正在尝试使用 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
(一个完美的圆柱体)是常数,我想要一个只包含圆柱体侧面的曲面图,而不是顶部或底部。该图应该看起来像一个空心的 shell.
我已经定义了函数r
。
感谢您的帮助!
显然,经过一些试验和错误后,best/easiest 在这种情况下要做的事情就是转换 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
值重叠而搞砸,或者相邻的数据点可能无法正确连接,但显然事实并非如此。