1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
# -*- coding: utf-8 -*-
# vispy: gallery 2
# -----------------------------------------------------------------------------
# Copyright (c) Vispy Development Team. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
"""
Text in a Scene and ViewBox
===========================
Demonstrate the use of text in the root scene and a viewbox. Note
how the point size is independent of scaling of viewbox and canvas.
"""
import sys
import numpy as np
from vispy import scene
from vispy.scene.visuals import Text
# Create canvas with a viewbox at the lower half
canvas = scene.SceneCanvas(keys='interactive')
vb = scene.widgets.ViewBox(parent=canvas.scene, border_color='b')
vb.camera = scene.TurntableCamera(elevation=30, azimuth=30, up='+z')
axis = scene.visuals.XYZAxis(parent=vb.scene)
vb.camera.rect = 0, 0, 1, 1
@canvas.events.resize.connect
def resize(event=None):
vb.pos = 1, canvas.size[1] // 2 - 1
vb.size = canvas.size[0] - 2, canvas.size[1] // 2 - 2
t1 = Text('Text in root scene (24 pt)', parent=canvas.scene, color='red')
t1.font_size = 24
t1.pos = canvas.size[0] // 2, canvas.size[1] // 3
t2 = Text('Text in viewbox (18 pt)', parent=vb.scene, color='green',
rotation=30)
t2.font_size = 18
t2.pos = 0.5, 0.3
# Add a line so you can see translate/scale of camera
N = 1000
linedata = np.empty((N, 2), np.float32)
linedata[:, 0] = np.linspace(0, 1, N)
linedata[:, 1] = np.random.uniform(0.5, 0.1, (N,))
scene.visuals.Line(pos=linedata, color='#f006', method='gl', parent=vb.scene)
if __name__ == '__main__':
canvas.show()
if sys.flags.interactive != 1:
canvas.app.run()
|