使用 Mayavi 的多半径单线

Single line with multiple radii with Mayavi

我想在 Mayavi 中绘制一条宽度或半径不恒定的单线(或管)。这似乎是一项简单的任务,尽管我可能不太了解幕后发生的事情以实现这一目标。

下面的代码创建了我想要的线条,我可以按颜色缩放;但是,我也想按宽度缩放。

import mayavi.mlab as mlab
import numpy as np

x = range(100)
y = range(100)
z = range(100)
s = np.random.uniform(0, 1, 100)

mlab.plot3d(x, y, z, s, tube_radius=10)

我没有所需输出的图像,因为我无法创建它,尽管它基本上是前面的图像按半径而不是颜色缩放,因此线条的某些区域会比其他地区。一种可能的解决方案是使用 tube_radius 参数并单独绘制每个部分,尽管这看起来确实是一种糟糕的做法,因为线条可能会变得很长并且有许多不同的部分。

在 GUI 中,您可以转到 Tube 管道并使用 Vary_radius = 'vary_radius_by_scalar'

在脚本中你可以做到

import mayavi.mlab as mlab
import numpy as np

x = range(100)
y = range(100)
z = range(100)
s = np.random.uniform(0, 1, 100)

t = mlab.plot3d(x, y, z, s, tube_radius=10)
t.parent.parent.filter.vary_radius = 'vary_radius_by_scalar'

因为表面的父级是模块管理器(颜色等),它的父级是 Tube 管道