【问题标题】:vispy: two data sets on same plot with colorsvispy:同一图上的两个数据集,带有颜色
【发布时间】:2017-06-26 18:43:58
【问题描述】:

我有两个 3d numpy 数组,并试图通过 vispy 3d 散点图以两种不同的颜色绘制它们。

我已经熟悉你如何在 vispy 上通过 scatter 设置数据:

scatter.set_data(数据)

其中数据采用 numpy 数组的形式。但是,我需要用两种不同的颜色绘制两个不同的数据集,我觉得这里缺少一些非常明显的东西。我可以将这两个点集视为一个数据集,但是如何为点组获得两种不同的颜色呢?

【问题讨论】:

    标签: python point-clouds vispy


    【解决方案1】:

    我修改了 vispy 存储库中的 scatter 示例以执行您的要求。

    结果:

    代码:

    # pylint: disable=no-member
    """ scatter using MarkersVisual """
    
    import numpy as np
    import sys
    
    from vispy import app, visuals, scene
    
    
    # build your visuals, that's all
    Scatter3D = scene.visuals.create_visual_node(visuals.MarkersVisual)
    
    # The real-things : plot using scene
    # build canvas
    canvas = scene.SceneCanvas(keys='interactive', show=True)
    
    # Add a ViewBox to let the user zoom/rotate
    view = canvas.central_widget.add_view()
    view.camera = 'turntable'
    view.camera.fov = 45
    view.camera.distance = 500
    
    # data
    n = 500
    # generate 2 point clouds
    cloud1 = np.random.rand(n, 3) * 100
    cloud2 = np.random.rand(n, 3) * 100
    # cloud1 -> orange
    # cloud2 -> white
    color1 = np.array([[1, 0.4, 0]] * n)
    color2 = np.ones((n, 3))
    
    # stack point clouds and colors
    pos = np.vstack((cloud1, cloud2))
    colors = np.vstack((color1, color2))
    
    
    # plot ! note the parent parameter
    p1 = Scatter3D(parent=view.scene)
    p1.set_gl_state('translucent', blend=True, depth_test=True)
    p1.set_data(pos, face_color=colors, symbol='o', size=10,
                edge_width=0.5, edge_color='blue')
    
    # run
    if __name__ == '__main__':
        if sys.flags.interactive != 1:
            app.run()
    

    【讨论】:

      猜你喜欢
      • 2014-04-03
      • 2016-06-14
      • 2020-08-18
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2016-09-19
      相关资源
      最近更新 更多