{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Preamble" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from plotapi import Sankey\n", "\n", "Sankey.set_license(\"your username\", \"your license key\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction\n", "\n", "The nodes in a Plotapi Sankey diagram can be customised with many different parameters.\n", "\n", "As we can see, we have set our license details in the preamble with `Sankey.set_license()`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotapi Sankey expects a `list` of `dictionary` items, these will define the flow between a `source` and a `target`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "links = [\n", " {\"source\":\"Group A\", \"target\":\"Rank 1\", \"value\": 1000},\n", " {\"source\":\"Group B\", \"target\":\"Rank 1\", \"value\": 300},\n", " {\"source\":\"Group B\", \"target\":\"Rank 2\", \"value\": 600},\n", " {\"source\":\"Group B\", \"target\":\"Rank 3\", \"value\": 400},\n", " {\"source\":\"Rank 1\", \"target\":\"Club A\", \"value\": 700},\n", " {\"source\":\"Rank 1\", \"target\":\"Club B\", \"value\": 400},\n", " {\"source\":\"Rank 1\", \"target\":\"Club C\", \"value\": 200},\n", " {\"source\":\"Rank 2\", \"target\":\"Club B\", \"value\": 200},\n", " {\"source\":\"Rank 2\", \"target\":\"Club C\", \"value\": 400},\n", " {\"source\":\"Rank 3\", \"target\":\"Withdrawn\", \"value\": 400},\n", " {\"source\":\"Club A\", \"target\":\"The Most Amazing Prize\", \"value\": 500},\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can add many `source`'s and `target`'s in any arrangement." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visualisation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The nodes can be customised with the following parameters:\n", "\n", "- `node_width` - the thickness of the node.\n", "- `node_padding` - the padding between each node.\n", "- `node_opacity` - the opacity of the node colour.\n", "- `node_darken_factory` - how much darker the node colour appears (between and including $0$ and $1$).\n", "- `node_border_width` - the thickness of the node border.\n", "- `node_border_color`- the colour of the node border.\n", "- `node_font_size` - the node label font size.\n", "\n", "Let's demonstrate these below.\n", "\n", "Here we're using `.show()` which outputs to a Jupyter Notebook cell, however, we may want to output to an HTML file with `.to_html()` instead. More on the different output methods later!\n", "\n", "Be sure to interact with the visualisation to see what the settings can do!\n", "
" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "Plotapi - Sankey Diagram\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "
\n", " \n", " \n", "\n", " \n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Sankey(links, link_numbers=False, \n", " node_width=40, node_padding=40, node_opacity=0.75,\n", " node_darken_factor=1, node_border_width=10,\n", " node_border_color=\"#f8f8f8\", node_font_size=18).show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can do so much more than what's presented in this example, and we'll cover this in later sections. If you want to see the full list of growing features, check out the Plotapi Documentation." ] } ], "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.1" } }, "nbformat": 4, "nbformat_minor": 4 }