{ "cells": [ { "cell_type": "markdown", "id": "39e008b4", "metadata": {}, "source": [ "# Advanced Model Visualization\n", "\n", "When visualizing a model using the `show` API, there are a lot of layout options. In this notebook we will show how to edit the way that a visualization looks, and how to export it in various formats. There are also visualization features that are specific to schedulers, results and the simulator. These will be explored in the respective notebooks on these topics.\n", "\n", "**Note:** This notebook does not render properly in the HTML docs." ] }, { "cell_type": "markdown", "id": "7e83c507", "metadata": {}, "source": [ "## Javascript visualization\n", "Remember the car model from the introduction? You will notice that it does not have the same colors as it had in the introduction notebook. The reason for this is that in the introduction, we specified a different **Layout**." ] }, { "cell_type": "code", "execution_count": 1, "id": "ee47a8f3", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:48.649357Z", "iopub.status.busy": "2026-10-01T12:39:48.649111Z", "iopub.status.idle": "2026-10-01T12:39:49.245298Z", "shell.execute_reply": "2026-10-01T12:39:49.244683Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " Network\n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from stormvogel import *\n", "\n", "show(examples.create_car_mdp())\n", "# show(examples.create_car_mdp(), show_editor=True) # with layout editor" ] }, { "cell_type": "markdown", "id": "49d4ace9", "metadata": {}, "source": [ "### Basic editing\n", "Let's edit the layout! The first thing that you need to do is open the layout editor by adding `show_editor = True` to the call to `show`.\n", "A menu will open up with a lot of different sections that can be opened by clicking on them. First of all, let's try to alter the colors of states and actions. Click on 'states' or 'actions' and then adjust 'bg color' by clicking on the box with a color. A color picker will open up. You will notice that there are a lot of different options, feel free to play around with them and see the changes to the model in real time.\n", "\n", "### Dragging nodes\n", "You can also change the position of nodes by selecting them in the displayed network, and moving them around. This does not require the editor, but your changes here can only be saved if you are using it.\n", "\n", "### Exploring\n", "Go to 'misc', set 'explore' to True and press the 'Reload' button. Now you can explore the model. Clicking on a node reveals its successors.\n", "\n", "### Edit groups\n", "In the model in the introduction notebook, states with different labels had different colors, but right now we only have a single group for states, and a single group for actions. You can change this by going to 'edit_groups'. By default, there are two groups: one for states and one for actions.\n", "* Remove both of them from the list by pressing the cross next to them. Now press the reload button at the bottom, and you will see that 'states' and 'actions' are removed from the editing menu.\n", "* Now open 'edit_groups' again and press the empty box. It will give you some options that correspond to the labels of the states that are present. Select 'green_light', 'red_light' and 'accident'. Press reload again. Now you can edit these groups and create a similar layout to the introduction notebook.\n", "\n", "### Saving layouts (including node positions)\n", "It is always useful to save your layout so that it won't be gone once you re-execute the cell. An easy way of doing this is by going to 'saving', and providing a path to store the json file that contains your layout. Then press 'Save'. If you re-execute the cell, and go to saving, enter the same name, and press 'Load', your layout will be back. In practice, it is more useful to also be able to load a layout without having to go through the menu. You can do this easily by adding `layout=Layout(\"filename.json\")` the call to show.\n", "\n", "### Exporting visualizations\n", "Visualizations in stormvogel are rendered to HTML. This means that you can also export them and embed them in other web pages. You can also export it to a vector image in svg or pdf format. The latter is easy to include in your latex projects by `\\includegraphics{export.pdf}`.\n", "\n", "**Note:** There are additional model visualization features for schedulers and results, but they will be explained in their respective notebooks." ] }, { "cell_type": "code", "execution_count": 2, "id": "0aba7910", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:49.262952Z", "iopub.status.busy": "2026-10-01T12:39:49.262578Z", "iopub.status.idle": "2026-10-01T12:39:49.265381Z", "shell.execute_reply": "2026-10-01T12:39:49.264939Z" } }, "outputs": [], "source": [ "# show(examples.create_car_mdp(), show_editor=True\n", "# This enables the layout in \"layouts/car.json\", and turns on the layout editor.\n", "\n", "# Export the visualization in different formats:\n", "# vis.export(\"html\", \"vis_html\")\n", "# vis.export(\"svg\", \"vis_svg\")\n", "# vis.export(\"pdf\", \"vis_pdf\")" ] }, { "cell_type": "markdown", "id": "f0efef52", "metadata": {}, "source": [ "### Advanced editing\n", "If the layout editor does not provide a visualization option that you need, it is also possible to edit the layout manually. The following code shows you what the default layout looks like. `Layout.layout` is a dictionary that stores all the layout information. You could edit this directly, but this can get annoying because it is a nested dictionary. We provide a method `set_value` to make this easier. Alternatively, If you have a lot of options that you want to change at the same time, it is probably easier to overwrite `Layout.layout` directly.\n", "\n", "Try outcommenting the third line in the next cell, and see the changes. under \"groups\". Then see the changes in the model by re-executing the final cell.\n", "\n", "The structure of the layout is derived from the vis.js library (that is also used to display the models). There are many other options that can be changed but which are not in the layout editor. For more information, we refer to the [vis.js documentation](https://visjs.github.io/vis-network/docs/network/#options)." ] }, { "cell_type": "code", "execution_count": 3, "id": "a2ba7bf4", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:49.267089Z", "iopub.status.busy": "2026-10-01T12:39:49.266922Z", "iopub.status.idle": "2026-10-01T12:39:49.272448Z", "shell.execute_reply": "2026-10-01T12:39:49.272018Z" } }, "outputs": [ { "data": { "text/plain": [ "{'__fake_macros': {'__group_macro': {'borderWidth': 1,\n", " 'color': {'background': 'white',\n", " 'border': 'black',\n", " 'highlight': {'background': 'white', 'border': 'red'}},\n", " 'shape': 'ellipse',\n", " 'mass': 1,\n", " 'font': {'color': 'black', 'size': 14}}},\n", " 'edit_groups': {'groups': ['states', 'actions']},\n", " 'groups': {'actions': {'shape': 'box', 'color': {'background': 'lightblue'}},\n", " 'scheduled_actions': {'shape': 'box',\n", " 'color': {'background': 'pink', 'border': 'red'}},\n", " 'states': {'color': {'background': 'orange'}}},\n", " 'reload_button': False,\n", " 'edges': {'arrows': 'to',\n", " 'font': {'color': 'black',\n", " 'size': 14,\n", " 'strokeColor': 'white',\n", " 'strokeWidth': 2},\n", " 'color': {'color': 'black'},\n", " 'width': 1},\n", " 'numbers': {'visible': True,\n", " 'fractions': True,\n", " 'digits': 5,\n", " 'denominator_limit': 1000},\n", " 'results': {'show_results': True,\n", " 'result_symbol': '☆',\n", " 'result_colors': True,\n", " 'min_result_color': '#ffffff',\n", " 'max_result_color': '#ff0000'},\n", " 'state_properties': {'show_ids': False,\n", " 'show_valuations': False,\n", " 'show_rewards': True,\n", " 'reward_symbol': '€',\n", " 'show_zero_rewards': True,\n", " 'show_observations': True,\n", " 'observation_symbol': 'ʘ'},\n", " 'layout': {'randomSeed': 5},\n", " 'misc': {'enable_physics': True,\n", " 'width': 800,\n", " 'height': 300,\n", " 'explore': False},\n", " 'saving': {'relative_path': True,\n", " 'filename': 'layouts/NAME.json',\n", " 'save_button': False,\n", " 'load_button': False},\n", " 'positions': {},\n", " 'physics': True,\n", " 'autoResize': True}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_layout = layout.DEFAULT()\n", "my_layout.layout[\"groups\"][\"states\"] = {}\n", "my_layout.set_value([\"groups\", \"states\", \"color\", \"background\"], \"orange\")\n", "my_layout.layout" ] }, { "cell_type": "code", "execution_count": 4, "id": "2a24e24b", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:49.274126Z", "iopub.status.busy": "2026-10-01T12:39:49.273962Z", "iopub.status.idle": "2026-10-01T12:39:49.300568Z", "shell.execute_reply": "2026-10-01T12:39:49.299991Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " Network\n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "show(examples.create_car_mdp())" ] }, { "cell_type": "markdown", "id": "db539d8a", "metadata": {}, "source": [ "### Javascript injection\n", "If you want to customize the visualization even more, you can modify the source code, or you can use Javascript injection from a notebook. Yous can always use `IPython.display` to execute JavaScript code, and `f\"{vis.network_wrapper}.network\"` to retrieve the `vis.js` Network object. Also see `html_generation.py` and the documentation of `vis.js`.\n", "\n", "Here is a small example of javascript injection that destroys the network." ] }, { "cell_type": "code", "execution_count": 5, "id": "5b377ae3", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:49.317703Z", "iopub.status.busy": "2026-10-01T12:39:49.317441Z", "iopub.status.idle": "2026-10-01T12:39:49.320319Z", "shell.execute_reply": "2026-10-01T12:39:49.319673Z" } }, "outputs": [], "source": [ "# import IPython.display as ipd\n", "# ipd.display(ipd.Javascript(\n", "# f\"\"\"{vis.network_wrapper}.network.destroy()\"\"\"))" ] }, { "cell_type": "markdown", "id": "32795af1", "metadata": {}, "source": [ "## Positioning algorithms\n", "We can use positioning algorithms from `networkx` to set the positions of nodes in the visualization, or create our own. Check out the [networkx documentation](https://networkx.org/documentation/stable/reference/drawing.html#module-networkx.drawing.layout) for a list of positioning algorithms." ] }, { "cell_type": "code", "execution_count": 6, "id": "d2cdd4ec", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:49.322194Z", "iopub.status.busy": "2026-10-01T12:39:49.322013Z", "iopub.status.idle": "2026-10-01T12:39:49.349397Z", "shell.execute_reply": "2026-10-01T12:39:49.348763Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " Network\n", " \n", " \n", " \n", " \n", " \n", "
\n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from stormvogel import *\n", "import networkx as nx\n", "\n", "\n", "def positioning(G):\n", " # return nx.bfs_layout(G, start=0) # Good for DAGs, we have to specify start=0\n", " # return nx.kamada_kawai_layout(G) # Good overal\n", " return nx.circular_layout(G)\n", "\n", "\n", "show(examples.create_car_mdp(), pos_function=positioning, pos_function_scaling=300)" ] }, { "cell_type": "markdown", "id": "e1b93627", "metadata": {}, "source": [ "## Matplotlib visualization\n", "Alternatively, we can also use matplotlib to display our models if we tell stormvogel to use \"mpl\" as the engine. The support for this is more limited." ] }, { "cell_type": "code", "execution_count": 7, "id": "fa6327b8", "metadata": { "execution": { "iopub.execute_input": "2026-10-01T12:39:49.367261Z", "iopub.status.busy": "2026-10-01T12:39:49.367031Z", "iopub.status.idle": "2026-10-01T12:39:49.809413Z", "shell.execute_reply": "2026-10-01T12:39:49.808831Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "show(examples.create_car_mdp(), engine=\"mpl\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13.15" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "250ebe81b24e49c19182bf7f5a647ed9": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_51ba5f2754e646feb5061224cfbc396a", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "2999c88256f84c169fa844f9ad172385": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "51ba5f2754e646feb5061224cfbc396a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "84dd5eefe98d4cf7baa4f7c2e14bbfca": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_2999c88256f84c169fa844f9ad172385", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "8fd43f50b5bd4013b6b99f3fcf131bf4": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_9969b2f9003b4e83afc6eaafd1a97a8c", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "9969b2f9003b4e83afc6eaafd1a97a8c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9d1fcda03c824f2199421ecb7d974c86": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_f5e0aef0edce4d6ca58790cc6deaef8e", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "b0f69cc4d4304c25889a4d6924b271a4": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_ee144dcd7c9a4266b999c2c9ad3c7050", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "ccadd5880eeb441a810f48f31bc51121": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e7bb8fc7ef2c44239bb4c667ba53def5": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_ccadd5880eeb441a810f48f31bc51121", "msg_id": "", "outputs": [], "tabbable": null, "tooltip": null } }, "ee144dcd7c9a4266b999c2c9ad3c7050": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f5e0aef0edce4d6ca58790cc6deaef8e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }