python - vispy:两个数据集在同一个图上有颜色

标签 python point-clouds vispy

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

我已经熟悉你如何通过 scatter 在 vi​​spy 上设置数据了:

scatter.set_data(数据)

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

最佳答案

我修改了 vispy 存储库中的分散示例来执行您的要求。

结果:

enter image description here

代码:

# 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()

关于python - vispy:两个数据集在同一个图上有颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44766591/

相关文章:

python - 使用 numpy 计算曲率时出错

python - 有没有办法根据需要借用硬盘内存?

c# - 使用 Kinect SDK 的 body 点云

python - 如何让我的Python动画流畅?

python - 如何在 PyQt 中嵌入 vispy 图形?

python - flask-peewee 可以迁移吗?

python - numpy:沿新轴扩展数组?

graphics - 点云的一致法线计算

3d - 二维点云的轮廓

python - 使用 vispy/scipy 时无法卡住应用程序