Skip to content

Instantly share code, notes, and snippets.

@brickgao
Created February 22, 2015 05:52
Show Gist options
  • Save brickgao/13975a0a5b68c73d48ca to your computer and use it in GitHub Desktop.
Save brickgao/13975a0a5b68c73d48ca to your computer and use it in GitHub Desktop.
Prototype for scatter.
# -*- coding: utf-8 -*-
from vispy.scene import SceneCanvas, visuals
import numpy as np
from vispy import app
plots = []
def scatter(*args, **kwds):
''' Create a new canvas and make a scatter plots.
TODO: doc
'''
kwds['scaling'] = True
if 'size' not in kwds:
kwds['size'] = 100
if 'pos' in kwds:
del kwds['pos']
canvas = SceneCanvas(keys='interactive')
canvas.view = canvas.central_widget.add_view()
canvas.scatter = []
if len(args) == 1:
_pos = np.zeros((len(args[0]), 2))
_pos[:, 0] = [np.float32(i) for i in range(len(args[0]))]
_pos[:, 1] = map(np.float32, args[0])
canvas.scatter = visuals.Markers()
canvas.scatter.set_data(pos=_pos, **kwds)
canvas.view.add(canvas.scatter)
canvas.view.camera.auto_zoom(canvas.scatter)
canvas.show()
elif len(args) == 2:
_pos = np.zeros((len(args[0]), 2))
_pos[:, 0] = map(np.float32, args[0])
_pos[:, 1] = map(np.float32, args[1])
canvas.scatter = visuals.Markers()
canvas.scatter.set_data(pos=_pos, scaling=True, size=100)
canvas.view.add(canvas.scatter)
canvas.view.camera.auto_zoom(canvas.scatter)
canvas.show()
else:
raise TypeError("The positions that you given is wrong")
canvas.show()
plots.append(canvas)
return canvas
if __name__ == '__main__':
c = scatter([0, 1, 2, 3, 4, 5])
c.show()
app.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment