pip install vispy
import numpy as np
from vispy import app, gloo
from vispy.util.transforms import perspective, translate, rotate
canvas = app.Canvas(title='Interactive Data Visualization', size=(800, 600), resizable=True)
view = canvas.central_widget.add_view()
view.camera = 'turntable'
view.camera.fov = 90
view.camera.distance = 10
data = np.random.normal(size=(10000, 3)).astype(np.float32)
vertex = """
attribute vec3 position;
void main()
{
gl_Position = vec4(position, 1.0);
}
"""
fragment = """
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
"""
program = gloo.Program(vertex, fragment)
program['position'] = gloo.VertexBuffer(data)
@canvas.connect
def on_draw(event):
gloo.clear(color=True, depth=True)
program.draw('points')
canvas.show()
app.run()