{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Interact\n", "Here is a simple example of using the `interact` decorator from ipywidgets to create a simple set of widgets to control the parameters of a plot" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import plotly.graph_objs as go\n", "import numpy as np\n", "from ipywidgets import interact" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we'll create an empty figure, and add an empty scatter trace to it." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "287e016e66734bc8b0e82e266ea1d071", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FigureWidget({\n", " 'data': [{'type': 'scatter', 'uid': '0e6538cc-a0d7-11e8-bd43-645aede86e5b'}], 'layout': {}\n", "…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = go.FigureWidget()\n", "scatt = fig.add_scatter()\n", "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, write an update function that inputs the frequency factor (`a`) and phase factor (`b`) and sets the `x` and `y` properties of the scatter trace. This function is decorated with the `interact` decorator from the `ipywidgets` package. The decorator parameters are used to specify the ranges of parameters that we want to sweep over. See http://ipywidgets.readthedocs.io/en/latest/examples/Using%20Interact.html for more details." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dcb92c5746374d0e9abacbd6a4c90bbb", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=3.6, description='a', max=4.0, min=1.0, step=0.01), FloatSlider(value=…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xs=np.linspace(0, 6, 100)\n", "\n", "@interact(a=(1.0, 4.0, 0.01), b=(0, 10.0, 0.01), color=['red', 'green', 'blue'])\n", "def update(a=3.6, b=4.3, color='blue'):\n", " with fig.batch_update():\n", " scatt.x=xs\n", " scatt.y=np.sin(a*xs-b)\n", " scatt.line.color=color" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "01f7b80ade84490f9855b371fa1034e2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "FloatSliderModel", "state": { "description": "a", "layout": "IPY_MODEL_b8c74862782042f995cd0fcb337e5d42", "max": 4, "min": 1, "step": 0.01, "style": "IPY_MODEL_77146b689d6d41ed8d0a138929cbb25b", "value": 3.6 } }, "287e016e66734bc8b0e82e266ea1d071": { "buffers": [ { "data": "AAAAAAAAAAAIH3zwwQevPwgffPDBB78/RhdddNFFxz8IH3zwwQfPP2WTTTbZZNM/RhdddNFF1z8nm2yyySbbPwgffPDBB98/dNFFF1104T9lk0022WTjP1ZVVVVVVeU/RhdddNFF5z822WSTTTbpPyebbLLJJus/GF100UUX7T8IH3zwwQfvP3zwwQcffPA/dNFFF1108T9tsskmm2zyP2WTTTbZZPM/XXTRRRdd9D9WVVVVVVX1P0422WSTTfY/RhdddNFF9z8++OCDDz74PzbZZJNNNvk/L7rooosu+j8nm2yyySb7Px988MEHH/w/GF100UUX/T8QPvjggw/+PwgffPDBB/8/AAAAAAAAAEB88MEHH3wAQPjggw8++ABAdNFFF110AUDxwQcffPABQG2yySabbAJA6aKLLrroAkBlk0022WQDQOGDDz744ANAXXTRRRddBEDZZJNNNtkEQFZVVVVVVQVA0kUXXXTRBUBONtlkk00GQMomm2yyyQZARhdddNFFB0DCBx988MEHQD744IMPPghAuuiiiy66CEA22WSTTTYJQLPJJptssglAL7rooosuCkCrqqqqqqoKQCebbLLJJgtAo4suuuiiC0AffPDBBx8MQJtssskmmwxAGF100UUXDUCUTTbZZJMNQBA++OCDDw5AjC666KKLDkAIH3zwwQcPQIQPPvjggw9AAAAAAAAAEEA++OCDDz4QQHzwwQcffBBAuuiiiy66EED44IMPPvgQQDbZZJNNNhFAdNFFF110EUCzySabbLIRQPHBBx988BFAL7rooosuEkBtsskmm2wSQKuqqqqqqhJA6aKLLrroEkAnm2yyySYTQGWTTTbZZBNAo4suuuiiE0Dhgw8++OATQB988MEHHxRAXXTRRRddFECbbLLJJpsUQNlkk0022RRAF1100UUXFUBWVVVVVVUVQJRNNtlkkxVA0kUXXXTRFUAQPvjggw8WQE422WSTTRZAjC666KKLFkDKJptssskWQAgffPDBBxdARhdddNFFF0CEDz744IMXQMIHH3zwwRdAAAAAAAAAGEA=", "encoding": "base64", "path": [ "_data", 0, "x" ] }, { "data": "JYoBOjtR7T/n1xj+mtjpPwRk8zVBJuU/CD//dWDm3j/8mUPsLAnSPwXmfhw1RLE/EtoVX+82w7/ax5QwXxPXv0k6wPmWueG/N59xRlgS57+Y2FJMDVPrv1k4Gh8XSO6/DE1drZDN77/YsSBzAtHvv+xZR6FCUu6/8OEOGXdj67+Z84gjOSjnv5Jc6Fbl0+G/MgwvTVhO17/RD/O1ArTDv9MrdZSoR7A//Waxsm7M0T/+BUt06K7eP8OSJvZ4DuU/4CGdK+fF6T91iUnYfkTtPysKsULVX+8/ou9E11f+7z/oXeiPghjvP6Q+Fi47uew/LHNS9Ez96D8kHnwkCxLkPypEwapVZtw/0zBI1rifzj8L63oQc/iXP5U3qrz6xci/p0Zu4iev2b9pbur8x+Hiv4ZKM7rKBui/dsMnDCoI7L8KFFbLR7Xuv9E5been7e+/pdodtXqi779hyxC2UNftvzISvFTvoeq/3ulCoUgp5r+GTQqXoqPgv/DTIqoIqNS/7ViMK0Q4vL9TPkLDI4a7P3tHjRidfdQ/ASUxhnyQ4D/YnYO2GhnmP0gabPN9leo/7crn5jLP7T9YVO78Ep/vPxuuTZsf7+8/2trtGo277j8xWunZ8BLsP555QzeQFeg/pcbl3Njz4j9dVhrVKdjZP752doPbHck/iJ/aPdsrlb98icLsskjOv+AUDWUpPty/4eZVKZQA5L+gvXIeSe/ov4znR5tUr+y/ZkVHbTET778Wi4Wu3P3vv7j2wOo1ZO+/5tZtLoZN7b8AtmqYJ9Ppvyjhv59RH+W/fMlVSTHW3r/yofAxcvfRv7vPIcx4+rC/eLTAuHZbwz9wp/jDmSTXP8MEiyZHweE/F2JFBL4Y5z+mDfzz2lfrP90H02ISS+4/gUWBXJXO7z9qrXQxBNDvPxSAAX1NT+4/l6mB+K5e6z9WWmER2CHnP/+eqME4zOE/oONraSI91z+8RdxKf4/DP9nseEhokbC/jc/YCy3e0b+FqsHZHb/ev3cx+s9sFeW/U4tiyF/L6b8RHR7POUjtv3LWDUylYe+/Jb2a8ib+778=", "encoding": "base64", "path": [ "_data", 0, "y" ] } ], "model_module": "plotlywidget", "model_module_version": "^0.2.1", "model_name": "FigureModel", "state": { "_data": [ { "line": { "color": "blue" }, "type": "scatter", "uid": "0e6538cc-a0d7-11e8-bd43-645aede86e5b" } ], "_js2py_pointsCallback": {}, "_js2py_relayout": {}, "_js2py_restyle": {}, "_js2py_update": {}, "_last_layout_edit_id": 2, "_last_trace_edit_id": 2, "_py2js_animate": {}, "_py2js_deleteTraces": {}, "_py2js_moveTraces": {}, "_py2js_relayout": {}, "_py2js_removeLayoutProps": {}, "_py2js_removeTraceProps": {}, "_py2js_restyle": {}, "_view_count": 1 } }, "370dca2aea5f4f399a675c2664f78989": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "FloatSliderModel", "state": { "description": "b", "layout": "IPY_MODEL_d5ea95dba4f9448d9a7e4173725931a9", "max": 10, "step": 0.01, "style": "IPY_MODEL_93fc567cf0054c68b4a25f9a6ed95597", "value": 4.3 } }, "684ea92061614a29ab5f395d20c4fdc4": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_891ff7350ec94b8792b936cde5c31260" } }, "73ecf3e381df43c99f1c916e968f4b6e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "77146b689d6d41ed8d0a138929cbb25b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "891ff7350ec94b8792b936cde5c31260": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "93fc567cf0054c68b4a25f9a6ed95597": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "b52ea641006e4b83abdff99e5346f364": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "red", "green", "blue" ], "description": "color", "index": 2, "layout": "IPY_MODEL_73ecf3e381df43c99f1c916e968f4b6e", "style": "IPY_MODEL_d38bab9b54a540958810f5cc7e14ca3f" } }, "b8c74862782042f995cd0fcb337e5d42": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "ce0bcbb262064e889eb14a816f8088ac": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "d38bab9b54a540958810f5cc7e14ca3f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "d5ea95dba4f9448d9a7e4173725931a9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.1.0", "model_name": "LayoutModel", "state": {} }, "dcb92c5746374d0e9abacbd6a4c90bbb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.3.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_01f7b80ade84490f9855b371fa1034e2", "IPY_MODEL_370dca2aea5f4f399a675c2664f78989", "IPY_MODEL_b52ea641006e4b83abdff99e5346f364", "IPY_MODEL_684ea92061614a29ab5f395d20c4fdc4" ], "layout": "IPY_MODEL_ce0bcbb262064e889eb14a816f8088ac" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 2 }