{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linking and Layout\n", "\n", "> [ Simple example](./Simple%20example.ipynb)\n", ">\n", "> [ Advanced examples](./More%20examples.ipynb)\n", ">\n", "> Linking and Layout\n", ">\n", "> [ Exporting Images](./Exporting%20Images.ipynb)\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from ipysankeywidget import SankeyWidget" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> This uses the base [ipywidgets](https://github.com/ipython/ipywidgets) for layout and data, but you can use any widgets!" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from ipywidgets import (\n", " VBox,\n", " HBox,\n", " IntSlider,\n", ")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "links = [\n", " {'source': 'start', 'target': 'A', 'value': 10},\n", " {'source': 'A', 'target': 'B', 'value': 10},\n", " {'source': 'C', 'target': 'A', 'value': 10},\n", " {'source': 'A', 'target': 'C', 'value': 10},\n", "]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "790a475697554bbfbee5867c7fa8d68f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "SankeyWidget(links=[{'source': 'start', 'target': 'A', 'value': 10}, {'source': 'A', 'target': 'B', 'value': 1…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = SankeyWidget(links=links)\n", "sankey" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> A convenience factory function" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def slider(link, i, sankey):\n", " value = IntSlider(description=\"{source} → {target}\".format(**link), min=0, max=10, step=1, value=10)\n", "\n", " def _change(change):\n", " sankey.links[i][\"value\"] = value.value\n", " sankey.send_state()\n", " \n", " value.observe(_change)\n", " \n", " return value" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Build up a slider per link to control the value:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "sliders = [slider(link, i, sankey) for i, link in enumerate(links)]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ecbee913b4e44d32abc1c78d4dc8a9da", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(SankeyWidget(links=[{'source': 'start', 'target': 'A', 'value': 10}, {'source': 'A', 'target': …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "box = HBox(children=[sankey, VBox(children=sliders)])\n", "box" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "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.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "00a23a8e78c6408aa952ec9fc96ad35b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "096faac070cc4679b7a31e158589f524": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "IntSliderModel", "state": { "description": "start → A", "layout": "IPY_MODEL_c20a7f4732574151b1ce6c4f9a2e1e50", "max": 10, "style": "IPY_MODEL_ca9103a303a641c7ad843cbc9b417a52", "value": 10 } }, "0ae2cd3147cb4d3783d51cb7837f47e7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "IntSliderModel", "state": { "description": "C → A", "layout": "IPY_MODEL_51dd9f11aa11461f876b483aa6b7ddec", "max": 10, "style": "IPY_MODEL_195bfa2a5c47491c883ba150dc68c5cc", "value": 10 } }, "12a554a0c0224ee39414d2c8647b349e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "195bfa2a5c47491c883ba150dc68c5cc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "2cc0e2e252334c9b96cbff3f581874da": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "30b65cdd28f649688fcd5f8fb16b2704": { "model_module": "jupyter-sankey-widget", "model_module_version": "^0.2.3", "model_name": "SankeyModel", "state": { "_model_module_version": "^0.2.3", "_view_module_version": "^0.2.3", "layout": "IPY_MODEL_97baf4291f73405d91e6ada159832abc", "links": [ { "source": "start", "target": "A", "value": 10 }, { "source": "A", "target": "B", "value": 10 }, { "source": "C", "target": "A", "value": 10 }, { "source": "A", "target": "C", "value": 10 } ], "nodes": [ { "id": "A" }, { "id": "B" }, { "id": "start" }, { "id": "C" } ], "order": [], "png": "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", "scale": 6.333333333333333, "svg": "start → A\n10.0A → B\n10.0C → A\n10.0A → C\n10.0AABBstartstartCC" } }, "34f6b41d1165415fa6a8ba159d2ff9b0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "IntSliderModel", "state": { "description": "A → C", "layout": "IPY_MODEL_00a23a8e78c6408aa952ec9fc96ad35b", "max": 10, "style": "IPY_MODEL_12a554a0c0224ee39414d2c8647b349e", "value": 10 } }, "51dd9f11aa11461f876b483aa6b7ddec": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "97baf4291f73405d91e6ada159832abc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "a12233631a234b6b8dd88b2f920f3869": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_30b65cdd28f649688fcd5f8fb16b2704", "IPY_MODEL_eb43f19579044e75b8b8107aab615838" ], "layout": "IPY_MODEL_b4abc2d99b6644818c67a8db108e6854" } }, "b4abc2d99b6644818c67a8db108e6854": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "c20a7f4732574151b1ce6c4f9a2e1e50": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "c59b89e50ac9425b85f2fe15df5af2c5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "IntSliderModel", "state": { "description": "A → B", "layout": "IPY_MODEL_ecd6fa6f9c214153a2db315eab5c86f7", "max": 10, "style": "IPY_MODEL_c5f18bfb2f2d42a5826ded2d147e68ef", "value": 10 } }, "c5f18bfb2f2d42a5826ded2d147e68ef": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "ca9103a303a641c7ad843cbc9b417a52": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "eb43f19579044e75b8b8107aab615838": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_096faac070cc4679b7a31e158589f524", "IPY_MODEL_c59b89e50ac9425b85f2fe15df5af2c5", "IPY_MODEL_0ae2cd3147cb4d3783d51cb7837f47e7", "IPY_MODEL_34f6b41d1165415fa6a8ba159d2ff9b0" ], "layout": "IPY_MODEL_2cc0e2e252334c9b96cbff3f581874da" } }, "ecd6fa6f9c214153a2db315eab5c86f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }