Python 在Mayavi中使用特定线颜色绘制多条线

Python 在Mayavi中使用特定线颜色绘制多条线,python,lines,mayavi,Python,Lines,Mayavi,我随后在3D中绘制了多条点对点线。 它可以工作,但是我需要根据一些标量值给每一行上色 如何在每行的基础上指定这样的标量值?您链接的教程使用标量指定线条颜色(使用“强调”贴图)。调用mlab.pipeline.scalar\u scalar(x,y,z,s)时,标量进入s 你是想问更多的问题吗?这里有一个解决方案,涉及到每次出现在边上时用一个dup复制每个点: def colorize_edges(points, edge_indices, edge_colors): assert poi

我随后在3D中绘制了多条点对点线。 它可以工作,但是我需要根据一些标量值给每一行上色


如何在每行的基础上指定这样的标量值?

您链接的教程使用标量指定线条颜色(使用“强调”贴图)。调用
mlab.pipeline.scalar\u scalar(x,y,z,s)
时,标量进入
s


你是想问更多的问题吗?

这里有一个解决方案,涉及到每次出现在边上时用一个dup复制每个点:

def colorize_edges(points, edge_indices, edge_colors):
    assert points.ndim == 2
    assert points.shape[1] == 3
    assert edge_indices.ndim == 2
    n_edges = edge_indices.shape[0]
    assert edge_indices.shape[1] == 2
    edge_indices = edge_indices.astype(int)
    assert edge_colors.ndim == 1
    assert edge_colors.shape[0] == n_edges
    x, y, z = points[:, 0], points[:, 1], points[:, 2]
    i, j = edge_indices[:, 0], edge_indices[:, 1]
    x = np.hstack([x[i], x[j]])
    y = np.hstack([y[i], y[j]])
    z = np.hstack([z[i], z[j]])
    c = np.hstack([c, c])
    src = mlab.pipeline.scalar_scatter(x, y, z, c)
    connections = np.vstack([i, j+n_edges]).T
    src.mlab_source.dataset.lines = connections
    surf = mlab.pipeline.surface(src, line_width=1.0)
    mlab.show()

这并没有回答@duga3的问题;我不知道他为什么接受了。对于示例中发生的情况,您弄错了:
scalar\u scatter(x,y,z,s)
为点指定唯一的颜色。添加线条(
src.mlab_source.dataset.lines=connections
)时,mayavi将线条颜色渲染为两种点颜色之间的线性插值。自从我查看此代码以来,很久没有定义过c。请随意编辑。