{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%gui qt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n# Multiple ViewBoxes on a Grid\n\nTest automatic layout of multiple viewboxes using Grid.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import sys\nimport numpy as np\n\nfrom vispy import scene, app\n\ncanvas = scene.SceneCanvas(keys='interactive')\ncanvas.size = 600, 600\ncanvas.show()\n\n# This is the top-level widget that will hold three ViewBoxes, which will\n# be automatically resized whenever the grid is resized.\ngrid = canvas.central_widget.add_grid()\n\n\n# Add 4 ViewBoxes to the grid\nb1 = grid.add_view(row=0, col=0)\nb1.border_color = (0.5, 0.5, 0.5, 1)\nb1.camera = scene.PanZoomCamera(rect=(-0.5, -5, 11, 10))\n\nb2 = grid.add_view(row=0, col=1)\nb2.camera = 'turntable'\nb2.border_color = (0.5, 0.5, 0.5, 1)\n\nb3 = grid.add_view(row=1, col=0)\nb3.border_color = (0.5, 0.5, 0.5, 1)\nb3.camera = scene.PanZoomCamera(rect=(-10, -5, 15, 10))\n\nb4 = grid.add_view(row=1, col=1)\nb4.border_color = (0.5, 0.5, 0.5, 1)\nb4.camera = scene.PanZoomCamera(rect=(-5, -5, 10, 10))\n\n\n# Generate some random vertex data and a color gradient\nN = 10000\npos = np.empty((N, 2), dtype=np.float32)\npos[:, 0] = np.linspace(0, 10, N)\npos[:, 1] = np.random.normal(size=N)\npos[5000, 1] += 50\n\ncolor = np.ones((N, 4), dtype=np.float32)\ncolor[:, 0] = np.linspace(0, 1, N)\ncolor[:, 1] = color[::-1, 0]\n\n# Top grid cell shows plot data in a rectangular coordinate system.\nl1 = scene.visuals.Line(pos=pos, color=color, antialias=False, method='gl')\nb1.add(l1)\ngrid1 = scene.visuals.GridLines(parent=b1.scene)\n\n# Bottom-left grid cell shows the same data with log-transformed X\ngrid2 = scene.visuals.GridLines(parent=b2.scene)\n\n# Bottom-left grid cell shows the same data with log-transformed X\ne2 = scene.Node(parent=b3.scene)\ne2.transform = scene.transforms.LogTransform(base=(2, 0, 0))\nl2 = scene.visuals.Line(pos=pos, color=color, antialias=False, parent=e2,\n method='gl')\ngrid3 = scene.visuals.GridLines(parent=e2)\n\n# Bottom-right grid cell shows the same data again, but with a much more\n# interesting transformation.\ne3 = scene.Node(parent=b4.scene)\naffine = scene.transforms.MatrixTransform()\naffine.scale((1, 0.1))\naffine.rotate(10, (0, 0, 1))\naffine.translate((0, 1))\ne3.transform = scene.transforms.ChainTransform([\n scene.transforms.PolarTransform(),\n affine])\nl3 = scene.visuals.Line(pos=pos, color=color, antialias=False, parent=e3,\n method='gl')\ngrid4 = scene.visuals.GridLines(scale=(np.pi/6., 1.0), parent=e3)\n\nif __name__ == '__main__' and sys.flags.interactive == 0:\n app.run()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.19" } }, "nbformat": 4, "nbformat_minor": 0 }