在mayavi中是否可以分别指定每个点的大小和颜色?
该API对我来说很麻烦。
points3d(x, y, z...) points3d(x, y, z, s, ...) points3d(x, y, z, f, ...) x, y and z are numpy arrays, or lists, all of the same shape, giving the positions of the points. If only 3 arrays x, y, z are given, all the points are drawn with the same size and color. In addition, you can pass a fourth array s of the same shape as x, y, and z giving an associated scalar value for each point, or a function f(x, y, z) returning the scalar value. This scalar value can be used to modulate the color and the size of the points.
因此,在这种情况下,标量会同时控制大小和颜色,并且无法解开它们。我想要一种将大小分别指定为(N,1)数组并将颜色分别指定为另一个(N,1)数组的方法。
(N,1)
看起来复杂吗?
每个VTK源都有一个用于标量和向量的数据集。
我在程序中使用的使颜色和大小不同的技巧是绕过mayavi源,直接在VTK源中,对颜色使用标量,对大小使用矢量(它也可能以其他方式起作用)。
nodes = points3d(x,y,z) nodes.glyph.scale_mode = 'scale_by_vector' #this sets the vectors to be a 3x5000 vector showing some random scalars nodes.mlab_source.dataset.point_data.vectors = np.tile( np.random.random((5000,)), (3,1)) nodes.mlab_source.dataset.point_data.scalars = np.random.random((5000,))
您可能需要转置5000x3矢量数据或以其他方式移动矩阵尺寸。