{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "In this post, we'll write a quick Sankey diagram tutorial using the matplotlib tools for that." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# What are Sankey diagrams? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Sankey diagrams](https://en.wikipedia.org/wiki/Sankey_diagram) are diagrams representing flows between different nodes by using arrows whose width scales according to the value of the flow.\n", "\n", "Two of the most famous Sankey diagrams (named after Irish captain Sankey) are Sankey's steam engine efficiency diagram and Minard's map of the French losses during the 1812 Russian campaign.\n", "\n", "![Sankey's steam machine](https://upload.wikimedia.org/wikipedia/commons/1/10/JIE_Sankey_V5_Fig1.png)\n", "\n", "![Minard's map of 1812](https://upload.wikimedia.org/wikipedia/commons/2/29/Minard.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As one can see in the diagrams above, Sankey diagrams have the following components:\n", "\n", "- individual \"systems\" or boxes (think of the steam engine components)\n", "- that have inputs and outputs\n", "- these inputs and outputs can be represented as branches that align with the system (they can flow from left, right or parallel to the system)\n", "- the boxes connect to each other" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These diagrams can be quite complicated to draw. Luckily for us, the matplotlib package comes with ways to draw these diagrams easily. Unfortunately, the documentation is not so easy to understand. That's where this tutorial comes in." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# How do Sankey diagrams work within matplotlib? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It turns out that matplotlib comes with a module named `matplotlib.sankey`. Its API documentation is [here](http://matplotlib.org/api/sankey_api.html).\n", "\n", "Also, the following examples are available : \n", "\n", "- a [basic example](http://matplotlib.org/examples/api/sankey_demo_basics.html), with a simple system and two connected systems\n", "- an [example with links between systems](http://matplotlib.org/examples/api/sankey_demo_links.html)\n", "- a [complex example drawing the Rankine cycle](http://matplotlib.org/examples/api/sankey_demo_rankine.html)\n", "\n", "Generally, a Sankey diagram ought to be built like this:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```python\n", "sankey = Sankey()\n", "sankey.add() # 1\n", "sankey.add() # 2\n", "#...\n", "sankey.add() # n\n", "sankey.finish()\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, one can do something like this:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```python\n", "Sankey().add().add... .add().finish()\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This being said, let's move to our first diagram." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Our first Sankey diagrams" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we first import the necessary matplotlib tools." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# import matplotlib\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from matplotlib.sankey import Sankey" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now build a Sankey with an input flow and an output flow of 1. The flows are specified with the `flows` argument, while labels are provided using `labels`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[ 0.16954982 0. ]\n", " [ 0.6947228 0. ]], texts=[, ], patch=Poly((-0.25, 0.5) ...), text=Text(0,0,''))]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nDCMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "sankey.add(flows=[1, -1],\n", " labels=['input', 'output'])\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are other arguments that can be specified. For instance, one can change the orientation of the diagram using the `rotation` argument:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[-1.0, -1.0], flows=[ 1 -1], tips=[[ 1.03819319e-17 -1.69549816e-01]\n", " [ 4.25395029e-17 -6.94722805e-01]], texts=[, ], patch=Poly((0.5, 0.25) ...), text=Text(0,0,''))]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "sankey.add(flows=[1, -1],\n", " labels=['input', 'output'],\n", " rotation=-90)\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's go a step further by providing a third flow to our diagram. To do this, we need to specify an orientations argument. In the previous diagram, we had only to flows, so by default the Sankey module assumes those to be input and output. Now, we need to specify how the flows align with the diagram using a list of orientations. Here, putting an orientation of 1 means it comes from the side." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[-1.0, -1.0, 2.0], flows=[ 1. -1. 0.5], tips=[[ -2.50000000e-01 5.80450184e-01]\n", " [ 4.25395029e-17 -6.94722805e-01]\n", " [ 7.90225092e-01 7.50000000e-01]], texts=[, , ], patch=Poly((0.75, 0.25) ...), text=Text(0,0,''))]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "sankey.add(flows=[1, -1, 0.5],\n", " orientations=[0, 0, 1],\n", " labels=['input', 'output', 'third flow (input)'],\n", " rotation=-90)\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same thing can be done for an output (a fourth flow), but on the other side:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[-1.0, -1.0, 2.0, 2.0], flows=[ 1. -1. 0.5 -0.5], tips=[[-0.25 0.58045018]\n", " [ 0.25 -1.4447228 ]\n", " [ 0.79022509 0.75 ]\n", " [-1.2349479 -0.75 ]], texts=[, , , ], patch=Poly((0.75, 0.25) ...), text=Text(0,0,''))]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "sankey.add(flows=[1, -1, 0.5, -0.5],\n", " orientations=[0, 0, 1, -1],\n", " labels=['input', 'output', 'third flow (input)', 'fourth flow (output)'],\n", " rotation=-90)\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is fun and all, but let's now see how we can connect two diagrams together." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Connecting diagrams together " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The API documentation states that to connect sankey diagrams together, we need to provide the following arguments:\n", "\n", "- `prior` which is an index of the prior diagram to which this diagram should be connected\n", "- `connect` which is a `(prior, this)` tuple indexing the flow of the prior diagram and the flow of this diagram which should be connected\n", "\n", "Basically `prior` is the zero based index of the previous diagram element. `connect` however is more cryptic. Let's start again with a simple input output diagram and try to connect it to another one." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[ 0.16954982 0. ]\n", " [ 0.6947228 0. ]], texts=[, ], patch=Poly((-0.25, 0.5) ...), text=Text(0,0,'')),\n", " Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[ 0.6947228 0. ]\n", " [ 1.21989579 0. ]], texts=[, ], patch=Poly((0.275173, 0.5) ...), text=Text(0.525173,0,''))]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "\n", "# first diagram, indexed by prior=0\n", "sankey.add(flows=[1, -1],\n", " labels=['input', 'output'])\n", "\n", "# second diagram indexed by prior=1\n", "sankey.add(flows=[1, -1],\n", " labels=['input2', 'output2'],\n", " prior=0,\n", " connect=(1, 0))\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It turns out that we can now give a simpler explanation of the `connect` argument: it says which flows (indexed in the order they were defined) should be connected. So `connect` should really be described as \n", "\n", "> connect = (index_of_prior_flow, index_of_current_diagram_flow) that need to be connected" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As one can see, the previous diagram does not look very nice. We can correct that by specifying the trunk lengths for each diagram (make them shorter or longer). According to the API:\n", "\n", "> trunklength: length between the bases of the input and output groups" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[-0.83045018 0. ]\n", " [ 1.6947228 0. ]], texts=[, ], patch=Poly((-1.25, 0.5) ...), text=Text(0,0,'')),\n", " Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[ 1.6947228 0. ]\n", " [ 2.21989579 0. ]], texts=[, ], patch=Poly((1.27517, 0.5) ...), text=Text(1.52517,0,''))]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "# first diagram, indexed by prior=0\n", "sankey.add(flows=[1, -1],\n", " labels=['input', 'output'],\n", " trunklength=3)\n", "sankey.add(flows=[1, -1],\n", " labels=['input2', 'output2'],\n", " trunklength=1.0,\n", " prior=0,\n", " connect=(1, 0))\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another argument that can be used is the pathlength. These only work for top and bottom flows. Again, according to the API:\n", "\n", "> list of lengths of the arrows before break-in or after break-away If a single value is given, then it will be applied to the first (inside) paths on the top and bottom, and the length of all other arrows will be justified accordingly. The pathlengths are not applied to the horizontal inputs and outputs.\n", "\n", "We can make another example for them:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[0, 0, 3, 1], flows=[ 1. -1. 0.1 0.3], tips=[[-0.38045018 0.1 ]\n", " [ 0.6947228 0. ]\n", " [-0.55 1.15804502]\n", " [-0.65 -1.57413506]], texts=[, , , ], patch=Poly((-0.25, 0.7) ...), text=Text(0,0,'')),\n", " Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[ 0.6947228 0. ]\n", " [ 3.21989579 0. ]], texts=[, ], patch=Poly((0.275173, 0.5) ...), text=Text(1.52517,0,''))]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWQAAADwCAYAAAA3mx7BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3WlAVGXfx/HvmRkGhs0l3BB3UlHcwTRJLc0FcV/RTLKy\nUittv63uFs3cUsu0TU3zFtNHzS01t7Qs0yAt9x1FSXNBYIZ1Zs7zwrJMUUDgnBn+nzcCc82Z34D8\nOHOda85RVFVFCCGE9gxaBxBCCHGVFLIQQuiEFLIQQuiEFLIQQuiEFLIQQuiEFLIQQuiESxeyoiil\nFUUZrnUOIYQoDC5dyEBpQApZCOEWTFoHuEMTgFqKouwBNv75tc6ACoxTVXWxoihtgbeBNCAY+BYY\nrqqqU4O8QgiRK1ffQ34FOK6qamPgJ6Ax0AhoD0xWFKXSn+OaA08D9YBaQC8NsgohxC0p+XnrdEBA\ngFq9evWiS5NPWVlZHDt2jPr165OYmIjFYiEgIACAkydPUqZMGYxGI0lJSdSpUweAixcvkpGRQZUq\nVbSMLoQoQeLj4y+qqlruduPyNWVRvXp14uLiCp6qkCUkJBAVFUVcXByjRo2iYcOGDB06FIDBgwfT\nt29f/P39eeONN9i2bRsAc+fOZe/evUybNk3L6EKIEkRRlFN5GefSUxZ+fn6kpaUB0Lp1axYvXozD\n4eDChQt89913NG/eHIBdu3Zx8uRJnE4nixcvJiIiQsvYQghxUy5dyHfddRetWrUiNDSUHTt20LBh\nQxo1asQDDzzApEmTqFixIgDh4eGMHDmSkJAQatSoQc+ePTVOLoQQN3L1VRbExsZe9/nkyZNvGOPv\n78+aNWuKK5IQQhSIS+8hCyGEO3H5PeTbadu2LW3bttU6hhBC3JbsIQshhE64fCGvX7+eOnXqEBwc\nzIQJE264/bvvvqNp06aYTCaWLl2qQUIhhMgbly5kh8PBiBEjWLduHQcOHGDRokUcOHDgujFVq1Zl\n3rx5DBw4UKOUQgiRNy49h7xr1y6Cg4OpWbMmAAMGDGDlypXUq1fv2pi/3lloMLj03x4hRAng0i11\n9uzZ694CHRQUxNmzZzVMJIQQBefShXyz83AoiqJBEiGEuHMuXchBQUEkJiYCkJmZyc6dOwkMDLxh\nXFxcHA6Ho7jjCSFEvrh0IYeHh3P06FFOnjzJggULmDlzJolnk67tOTudTv7z6uuEh4dz6lSezu0h\nhBCaydfpN8PCwlQ9ne0NYO3atYwaNYorV66Q5jTj5eNPRV8Dr786hi+XLufbn3Zju5CI2WjAx8eH\nihUrsn//fq1jCyFKEEVR4lVVDbvdOJfeQwaIjIzkyJEjTJw4Eb/qofj1GcsfxgAeGfooP5y4QtmB\nUygX2po5c+Zw6dIlKWMhhG659LK3mzF4eOHb+QXMTY9jrlBLDvIJIVyG2xUyXF1p4VkxWOsYQgiR\nLy4/ZSGEEO5CClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRC\nClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkIIXRCClkI\nIXRCClkIIXRCClkIIXRCClkIIXTCbQrZZDKhOB03vU01epCRkVHMiYQQIn/cppDLlCmDmpl609sc\nPuXYGRdfzImEECJ/3KaQGzdujO3sUVRVveE2S/0HiI1dhNVq1SCZEELkjdsUcuXKlfEwmXCk/nHD\nbSb/cliqhjL9/Q80SCaEEHnjNoWsKApRUV3IOLjtprd7RjzChPemMX/+F8WcTAgh8sZtChnguWef\nJnvfBtSbHNzzKF0R/55vMfKFV+jSvRdbt2696fSGEEJoRclPKYWFhalxcXFFGOfOhbVoRUKpRvg2\n6XLT251Z6dj2b8G5/xvIslK6bAAmk6lQHtvTy5OG9evz+piXCQkJKZRtCiFcn6Io8aqqht12nLsV\n8qFDh2h2T0tKR0/Bo3TFXMepqooj9QLOTCuq6iyUx1btWeSc2U/m7tVEdu7MvDmf4uPjUyjbFkK4\nrhJbyAATJk1iwsx5+Pd+G4PZUuyP78xKx7b1U2p4pvPtxvX4+fkVewYhhH7ktZDdag75Ly+/+CJd\n729B2sqxOLPSi/3xDZ7e+HZ4hpP20kS0bceVK1eKPYMQwvW4ZSErisL8ubPp1zGCK7HPkZm4T4MM\nBnzbPcUZUyXubX0/aWlpxZ5BCOFa3LKQAQwGA5/Mmsn8jz8ge8NU0jbNIudiYrFmUBQF37aPc95U\ngYEPx8iqDiHELelyDjkrK4v09PxPNZw+fRq73Q5cfSt1mTJlALh06RKTp0zl88/nYilXBSo3xFyh\nFh4BVTH6lMboU6ZQ8/+bas8mZcl/GPP0Y7z04gtF+lhCCP3J6xxy4az3KmTDn36WeXNmY7bkb4VC\npu36c1l4+fhfP0AxkHr2GJw9dt2Xq728pkA580oxmfHt8hJvvfMi9zQPp02bNkX6eEII16TLPeR9\n+/bRMqI1PlFj8Apyn/W8GSfiyfl2Jnv3/ELlypW1jiOEKCYuvcoiNDSULxcuwLp2EvaUG89N4aos\nNZthqN+RLt17FWhKRgjh3nRZyABdunThzVdfIW3VOE2WrhUVn3v6kmj3o12HzthsNq3jCCF0RLeF\nDPD8c6Pp0fF+rOvfu+n5KVyRohjw7fAMR9MttH7gQVJTb34O59zkd7wQWkhNTZVVRQWg60JWFIXZ\nn3xEnQAvbN/P1zpOoVEMRnweHMEpZ1latXmAgwcP5ul+Z86coexdd7F48ZIiTihEwTkcDsoFBPDB\ntKlaR3E5ujyo92+XL1+mUdNwMut1wadhx2J//KKiqiq2+BVk/Lycjh060DWyI76+vrmOv3DhAqOe\newEPT08UR84dTXn4+fkxZ86cAt9fiNw4HA6io6OpVMabOf/7PzpHRmodSXNudy6LI0eOEN7iXiwd\nn8erWkNNMhQVZ1Y66b+tx5CciOLIvuVYpVwtshUPkjd9cseP26dJ0a6/FiVXTX8H3WvZ6bHcwJbv\ndxAaGqp1JE259Drkm6lduzbLlnxJ9z79MfZ7F4+y7rNszODpjW94rzyP9wIcJ38mMPVX4h7zxses\nFPCR3WNeXuiViWn359C1Uzt2/rKX8uXLax1I93Q9h/xv7du3Z/K747CufgdHZsm+Pl6pXm/yuxpA\nv2VZOOXgidCpQQ09GBRso1dUR7KysrSOo3suVcgAw596ioG9umNbOxnVYdc6jmYMBgP+g2aw/ayR\nVzbnaB1HiFy93cZAxazjDHtksKy8uA2XK2SAGe9PpWHVu7BtnV2if8AGL298oqcy6+ds5v8qpSz0\nyaAozO8C+35Yx8Tx47SOo2suWcgmk4mVy5bgd+Uo6buL9jwUeme+qwqWLv9h+NeZbD9dcl8xCH3z\nMSus6g0zp03gq+XLtY6jWy5ZyAClSpViy4Z12H9ZTsaJeK3jaMqndks8WgwkalEGJ5ML53JUQhS2\nyv4GVvRSGDb0YXbv3q11HF1y2UIGqFGjBqtXLMe24X2yL57WOo6mSt8bjbPaPbRfkEFqVsmdxhH6\n1izQyEcdnHSP7EBSUpLWcXTHpQsZICIigg+nT8W66h0c6Slax9FU6W5juGiuRM8lWTicUspCn/rU\n8+CJ+hl07/ygnGTrX1y+kAFiYobw+JCBWL+eiGovuQe3DAYDpQZOJ+6CB89uKLnfB6F/Y1oZqGM8\nTcyg/jidMs32F7coZIDJEydwT91qWLd8VLJXXpi98B34PvP25PBxvJSy0CdFUZgdqXDm12289fqr\nWsfRDbcpZIPBwNLFsQRk/Y7t55J9FNejdEV8ur/B899ksuWkrLwQ+uRlUviql8r8T2ewaOFCrePo\ngtsUMoCvry+bv1mLun8d6Ud/0jqOpiw1muIZMZQeizM4ckneIi30qYKvgdV94NkRw/jpp5L9Owtu\nVsgAQUFBrF+zivTNM8k+f0LrOJryb94TgtvQfkEGyRkldxpH6FuDCkbmRqr06tqZ06dL9moptytk\ngPDwcGZ//BFpq8fjsCZrHUdTZaNeIMWnGlFfZpLjkFIW+hRV24MXmmXTtWM7rNaSe54atyxkgAED\n+jNqxBNY14zHmVOyT2pSKvo99qVYeHJtTok+4Cn0bfQ9RsJ9zzGob08cjpI5zea2hQzw9ptv0DYs\nFNvGGSW6iAwmM34DP2DJAQfTd8pBPqFPiqIwq5NCyrGd/OfF57SOowmXK+R77703z2MVRSF2wXwq\nm6zYfvoy13H2lPPYDmwthHT6ZfIPwKfXOF7bksm6o7IcTuiT2aiwrKfKV7Fz+HzObK3jFDuXK+Qf\nf/wxX+MtFgsb1q7GcHQrtoPf3XTM1ULeVhjxdM2rSn082z5Fv6WZ7P+jZL4kFPp3l/fVlRevvPAs\n27a5/+/lP7lcIf91zbmtW7fStm1b+vTpQ926dRk0aNC1aYnq1avz0ksv0aBBA5o3b47VamXjuq+5\nsm46KTv+vkDo6al9AEjeOp/MxP0kff40qT+vKP4nVYz8m0ZiqNeR9gsyuGCTd0gJfaobYGRhV+jf\nqxvHjx/XOk6xcblC/qfdu3czffp0Dhw4wIkTJ/jhhx+u3VaqVCn27t3LyJEjGTVqFI0aNeK+iFZk\nxK/Annrhuu2UaTsEryr1CXxkBv7hPYr7aRS7Mh1Hkl7mbjrFZpJlL7lz60Lf2tc08UZLO1EdHyAl\npWScp8alC7l58+YEBQVhMBho3LgxCQkJ126Ljo6+9u+OHTsAqFq1Kj27RWFdPR5ndoYWkXWj1ICJ\nHMvwI2ZVdok+4Cn07akwE+3LX6Zfjyjsdvc/IO3Shezp6XntY6PReN0PTFGUGz42mUz06N6NyLYt\nsa6fVsIvAWXCb9AMvj6mMuGHkvt9EPo3rb2Ccu5XRj/9lNZRipxLF/KtLF68+Nq/LVu2BK7OLf/y\nyy/Mm/MZZe2XwHm1iBSzt0vvMZ9b8EKB7mfyKY1P34mM+z6LFYeuX3mRcMVJ7N6/v7bxuJ1mn1pp\n8JGVZp9arztHxrw92SSlFXw++t+PJcQ/mQwKi7vD5lVfMuvDGXm+37x58+7onMsJCQnExsZe+3zj\nxo00a9aMBg0a0KxZM7Zs2VLgbefGbQs5OTmZhg0b8v777zNt2jQAHn/8cbZt20Z4eDiRnTqgKAq2\nfZsxl6uOYjCQNHekSx7Uqzh4SoHv61npbiztn+Wh5Zns/v3vlRf/LskAb4XV0d7sfcqX+T0sDP7q\n7z9g8/bkkJRW8GkPKWRxO6W8FFb3hrdff4WNGzbk6T6FXcgBAQGsXr2avXv3Mn/+fAYPHlzgbedG\nyc/8YVhYmBoXF1foIQpb9erViYuLIyAg4JbjDhw4QItW9+Hd5WW8guoXU7rCd3pqH6o+t5TM079x\nZXssRos/2RdPY65Yi4CoF1AUhTMfDcWnbgQZJ+JRPMwEdH0RjzKBXPx6GpZa4WQnHcS8fxXpOSq2\nMf5Um57GmVQVswE6BhuZ3slCVGw6+4b7oqoqvu+mMbqFB40rmohZkUFlfwMWE+x41IeQmVb61fdg\n3TE7FhPE9vYmuKyBmBUZRNU20aeeBwC+41OxjvGnxWwbBy86qFHawJBGHoxu6XmbZyxKqpFrM/g4\n3kGNmjUZMWIEPXr0ICoqin379gEwZcoUrFYroaGhxMTEULlyZSwWCzt27CAkJIR+/fqxbt06LBYL\nsbGxBAcHExMTQ1RUFH36XF115evri9VqpUWLFhw8eJAaNWowZMgQRo8efS2HqqoEBASQlJR03dRp\nbhRFiVdVNex249x2Dzkv6tWrx5JFC7GumXTDygtXlX3+BGXaDSPwsVnYr5wj6+yBa7cZPH0IfHQm\nfk2jSN782XX3K/PA42RXCCXTDj+ctmNQoENNIxde8uPoZfW6kxMtO2gn0E/BZFDoU8+DsEAjC3tZ\n2POkLxaPq/P1pTwV9j7ly8jmZkatz7xl5gntPbmvqok9T/pKGYtcxSc52HbKwczOZhyZaXz88cck\nJ9/8XDV9+vQhLCyMhQsXsmfPHiwWC3Dj6qtbmTBhAvfddx979uy5rowBli1bRpMmTfJUxvnhloWc\nkJBw273jvwQHB6MoKs5M9zihiWel2pj8A1AUA+byNbGn/HHtNu96bQDwCWlD1tlDN9y3VJ93cKrw\n5NosIqoYMRoUfM0Kveqa+P7PK1rv/8PBy5sy6R3iccsc0Q2u3h4d6sGOM/ImFHHntp+207OuiSfC\nzPStYSPDmsq3336br23cbPVVfu3fv5+XX36ZTz75pED3vxW3LGSAoUOHUr58eUJDQ3Mdk5ycTLsO\nnfFqMRBz+RrFmK7oKKa/i1IxGMCZSxn+ufJEMRjhz2krRVHAYORossKe89cfpLuSCVl2lZ6LM/ii\nhwVfs3LDJq/b/E0+Nhngr0v9qapKtvS0yId/Tq6Ob6vglXWJhV/Mv+4SUJmZt341ltvqq7+2oaoq\n2dnZud7/zJkz9OzZky+++IJatWoV4FncmtsWckxMDOvXr8/19pycHKJ69MZWPhSfRp2KMZl20g99\nD4Dt0Pd4BtYBwFiqPNnnjwGQcfQncDrw6/Q8+/5wcuyyA1u2yleH7ERUMXLyisqYCDNhgUbWHPl7\nlYWfp0Lav650vXh/zrV/W1YxAlC9tIH4pKstvPKwnZw/f4/8zApp2bIWWtxa62omVhyyk56jkmkH\nI3bSfj/KqVOnuHTpEllZWaxZs+baeD8/P9LS0q7bRm6rr+Lj4wFYuXIlOTk5N73/lStX6NKlC+++\n+y6tWrUqkudoKpKt6kDr1q2ve6PIP6mqypPDR3LwvA2/breeR3InzkwrSXNHohg9COj2IgB+jTry\nx7JxJM0diaVmMxQPL3xC7iP92E4OH9hK2YlpdL7byI9nHBgN8MTXmYxcl4nZCPdVvfr3PKaRB09+\nnXntoB5AcoZKw4+seJpgUW9vAB5v6kH3LzNo9LGVTrVM+Py5M9+wggGTARp9bCVGDuqJXDStZCSm\nsQfNP7MBMKyZB71CjDT4NIvQ0FCCg4OpW7futfExMTE8+eST1w7qwd+rrzw9PVm0aBFwdfVV9+7d\nadSoEZ06dcLH5+r/4YYNG2IymWjUqBExMTHYbDaOHTvG2LFjGTt2LAAbNmygfPnyhfYc3XKVxV8S\nEhKuOwL7l2nTP+DNydMp1W8iBk9vjdIVrzMfDaXSkGkYvUvl+T7J332Bcc//secJH6qWyvuLqerT\n04gb5kOAt9u+ABM6svOMnailCpu/+5GGDRvmOi6vq6+KgqyyyMW6det4/a2x+HZ9tcSUcUGVaf0w\n9qBmPLggA6tMKQiduifIxIz2Trp1bs/58+e1jnNHSlQhHzhwgP4DH8K3y4t4lK6odZxiFfTU3Hzt\nHf+ldI//co4Ahq/L+xs3Ekb5yd6xKFYDQj0YFJxOTHTvXMfkZ/WVVkrMb83Fixdp3ykSz1ZDXPpN\nIMXNmX4FNf0yjStonUSI3OU4VHaeM1C/YROto9wRtz2oFx0dzdatW7l48SJBQUGYzF5kV7kH39B2\nWkfThYtrp5Nx/GeM3qUIfHTWTcc47dlYFz5DjzoGRt9z63XHQ1dmsOaInfI+CvuG+xZFZCFuSlVV\nntmo4lk1jInvTb/l2KFDh7JmzRrKly9/w7ElPXDbPeRFixbx+++/k52dzX1tHyDNuxI+EQ9pHUs3\nfBu0p3zft245JmXxS9T1tTE7ynzd+s2biWnswfqHZE5eFL8ZPzv4Prkci5atxGg03nLs7ZbDas1t\nC/kv4ydMZN22n/DpMApFcfunm2deVUIxWvxyvT157TR8U07wdbQnZuOtyxiurhEta7n9OCEK07qj\nOby7y4PV6zfj7+9/2/GtW7embNmyxZCsYNy6oVasWMG7U6ZdXVFh9tI6jstIjV+F8/AWNj9s4S45\nOCd0av8fDoZ8rbB05dfUqOEe77R129+2PXv28FDMUPyiXsHkr+8jq3qScepXsrZ9xvJ+FuoG3Prl\nnxBauWBz0m0ZvPf+rCJ715wW3PKg3rlz5+gQGYWlzTA8K9XWOo7LsKdeIH3FG0x60IsHa7nlfw3h\nBrLsKr2+Uug/5AkGDxmidZxC5XZ7yBkZGTzYOQrn3ffjE3Kf1nFchtOeTdrCpxnUwMSI8FuvqBBC\nK6qq8sR6KBdyL+MmTNI6TqFzq0JWVZWBg4eQ5PDDp0V/rePo2oVVkzi34AVyLp/lzMwhXPjsMRqX\nzeLDTgUr4+hl6bScY+PwJSdBU9OY80vuZ8wSoqAm7XDyW1YgC75chsGQ//qKjo6mZcuWHD58mKCg\nIObMmVMEKQvOrc5l8dp/32DmF0vx6z0Wg4ecoCavLq+aQNnfd7DnCW9Ke8lKCaFPKw7lMPJbCz/F\n/0pQUJDWcfKlxJ3LYtGiL3l/1qf4Rv1HyjgfUnYsQTnxA5sHW6SMhW7t/t3B4+sVvlqz3uXKOD/c\nopB37drF408Nx6/bGIy+ZbSO4zLSj/9M9o4FrI62UKusW/xXEG7o9zQn3ZepzPpkLuHh4VrHKVIu\n/1uYmJhI567d8W43EnP5mlrHcRnZl8+Svnoc73f2onU1WVEh9CkjR6XHcoXHRz5P3/7uf1zIpQvZ\narXSvlMXDKGReN99j9ZxXIYzOx3botE83tSDx5rIigqhT6qq8shaqBXWjtfeuPXb/N2Fy+4aOZ1O\n+vQfyCXPQHzCemodx2U4nU5S//csLSvamdJe5tqFfr31vZMEpQbffhF723OpuAuXLeQXXnqZnYdO\n4d/rrRLzwyoMKSvGUsH5B0v7emM0yPdN6NOX+3L4/JAvO3/ZiMVi0TpOsXHJKYu5cz9n9heL8O3y\nMopRXnLnVfL3CzCeiWPT4NtfNVoIrew66+CZzQZWr99ExYol60ISLlfI27dv55nnXsC326sFugJG\nSWU7tB37z0tYO9CSr+vjCVGcElOc9FyuMmd+7C2vj+euXOo388SJE3Tt0QufDs9iDqiqdRyXkX0h\ngYx1k5jd1YsWQS47SyXcnDVbpesyGP3Sa3Tt1k3rOJpwmUJOSUmhXcdITE17YanZTOs4LsOZacW2\n+AWevcdMdAOZ3hH65FRVHloNTdt05fmXXtE6jmZcYnfJbrfTvVdf0krfjU+TKK3juAyn00nK/57m\n/ioqY+83ax1HiFyN2aqS7FuXJXPmleiD9C5RyCOfGc1viZfx6/56if5h5VfK0teoYkwmtpcFg3zf\nhE7N25PD0oTS/BS/DrO5ZO846H7KYuasWSz6ahU+kS+iGF3i74cuJG/5DPP5fWx8yAtvDyljoU/f\nn7Lz0jYjq9dvJiBALiSh60LeuHEjL415Hd+ur2L0kisZ55V172Yce1ax4SELlfx0/SMWJdiJZCf9\nVsL/vlxKSEiI1nF0Qbe7nIcPH6ZP/2j8Il/Ao2xlreO4jKzfj5Kx6X3+19OLJpXkEkxCn1IyVaKW\nwmtvjqdDx45ax9ENXe4+Xb58mfYdIzG3GIhX1ZK3FrGg7LYr2P7vZcZEmOkZIisqhD7ZnSr9V8L9\nUf0Y8cyzWsfRFV3uIb/4yhjOnfudsr7xZJyOL6StqtgunsV2/vR1X/UoV53AoR8W0mNox+m0Y134\nNF2CFcZESBkL/Xp+s4qzYiPen/mJ1lF0R5eF/Np/XqZH1y53vJ1Tp04xZ85c9uzZfe1risGAuUIw\nRv9yKCYzXtWb3PHj6EHK4lcItqQxr5tFVqII3fo4zs6G8wHsiFuDyaTL+tGULr8jNWrUoEaNGgW6\nr9PpZOPGjUye9gE//vgD3iFtKd+3B+aKwW77Vuvkbz7E+/IR1j/pjadJyljo06YTdt7cYWL7zs2U\nLl1a6zi6pMtCLgin08knn37K2PETycADQ/1OBDw2FIPZS+toRSp19zqcB75h46PelPPR5SEBITh8\n0cGg1bBkxSqCg4O1jqNbblHIJ0+eJHpwDIfPXMSrzQj8A+uWiJftmYn7yfp2Fv/X14vQ8rKiQujT\npXQnUUth/KRptGnTRus4uubSu1ROp5MZH86kQeNmHPcMxr/fu3hWDikRZWxPvYht+WuMfcCTyLvl\nIJ7Qp2yHSp8VCt0HPMKjjw/TOo7uuewe8qVLl4jq0ZtDiRco1Xc8HgFVtI5UbJz2bKyxz9A3xMjo\ne6SMhT6pqsrIDeBbM5yJ703XOo5LcMlCTkpK4r627Ui5qz7+/Z5DMbjGy/UzM4fgsF664+2UbvQg\nKSmpLNxnZNF+eyEkE+JvmdmF839qakdvdqYGsn3TCoxG1/gd1ZrLFfLZs2dpfm8E2TXb4NO8j0tN\nTwQO+xTVnn3tc2dGKqlrJmHKTmHsm2/QoUMHfHx8cr3/6dOnuffee/FNOc6+M2coW7ZsccQWJUxW\nVhY2m63A93c4HFSrVo3J8WZ2xG3Cz8+vENO5N5cq5EuXLhHRth1Zte7Ht3lvrePkm8HDEzyuXljU\nYbuC9etJPDqgO+9NnpSnPQiLxcK997Xh89mfUrmyvJ1cFA2LxXJHy9KcTift27Ti7XcnU61atUJM\n5v4UVVXzPDgsLEyNi4srwji5s9vthLeMINFcFd/7hmiSobDYrZdJW/5fnooZxLvvjHWpvXwhRP4p\nihKvqmrY7ca5zCqLCZMmc+pKDj4Rg7WOckccGWmkLn2NUU88woTx46SMhRDXuEQhHzhwgAkTJ+Pd\nfgSK4hKRb0pVndi+mcagPt15643/ah1HCKEzum83u91O/0EP49UyGlOpClrHuSO2nxZTo5SRD6a9\np3UUIYQO6f6g3qQp73HWquLXoZPWUe5IxvGfUQ9uYs2vu/HwkLXDQogb6XoPOSMjgwkTJ2G5/wmX\nnqrIuXIO28YZrFy+lEqVKmkdRwihU7puuSVLlmCuGOzSVwxxZFqxfT2Bt/77OhEREVrHEULomK4L\nefL0GRjqu+7lXRwZqaQt+y8De0Ty3Gi5MoIQ4tZ0W8jx8fGcSjyLpeZtl+7pksN2hbRlr/PogO7M\n/GC6LG8TQtyWbg/qTf9wFubQji5znoq/qKpKZsIeMr+bzcjHHmbc229JGQsh8kS3hbxx02a8Or5S\nZNvPSf55zkB0AAAG/UlEQVSdzJPxODKtkI93K96KwZGNcv4QPmoGH0yfSP/+/Qtlu0KIkkGXhZyc\nnEzypQtULBtY6NvOPL0X+y/LyT5/nK7duhFUKQizR+F8G7y8vAgJGUD37t3l7FZCiHzTZSH/8ssv\n+Fe+u9CnK9L3bSL7p4VMnzKJ/v37Y7FYCnX7QghxJ3RZyHFxcTjvKthFTnOTcTwO+85Ydv24ndq1\naxfqtoUQojDocpXFth93opSrVWjbU1WVnJ0L+eLzOVLGQgjd0mUhJ5w6hUfpioW2veykw3iRQ2Rk\nZKFtUwghCpsuCzkzIxPF5Flo28s+9iPDHn0Eg0GXT1cIIQCdFnJWViaKqfBOwGPMSqN6taqFtj0h\nhCgKuixk1emEQjyZkKI65QxrQgjd02UhCyFESSSFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQ\nOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGF\nLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQ\nOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGF\nLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQ\nOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOiGFLIQQOqFpISckJBAaGprn8ak/r8SZkwmA\n6nTwx7K3yf7jZFHFE0KIYuVSe8ipcStRc7JwZqVjXf0uWSfiSF32X9KP7dQ6mhBC3DHNC9lutzNo\n0CBCQkLo06cP6enpZGVm8MfycSTNGcHFtdNR7Tmkxq3CYb3MuYUvkTTrYQI90gEIrBBAyprJ2H7+\nipRdX5E0ZzhJc4aT+vPKq9tPOc+lgzv45JNPqF27NoMGDWLTpk20atWKu+++m127dmn59IUQ4hrN\nC/nw4cMMHz6cgwcP4u/vz9SpU7ly+SJlH3icwEdngtNB2u61+Id1w2Dxw+zIZOK74/nt1z1YLBaO\nHDnCsaNHsJzYStqOxVQYOJGKg9/D+us3ZJ8/DoAjK4PIyEgOHTrEoUOHiI2NZfv27UyZMoXx48dr\n/B0QQoirNC/kKlWq0KpVKwAeeughNm/ejMlkwlS6AgA+oe3IPLMP2/5vUdNTmP3RDJ5/bjSKoly3\njZFPDaNa5UpY10xAtWfjXbslmYn7ATCavahSpQoGg4H69evTrl07FEWhQYMGJCQkFPtzFkKImzFp\nHeCfxXpzKo6LpzGln6VSpYo8+OCDNx1lNpsZGN0fa3oGc/73MmpgAwzepa7eaPj7747BYMDT0/Pa\nx3a7vTCehhBC3DHN95BPnz7Njh07AFi0aBHt27fHbrdjT/kDZ3YmV76ZQTkfE7/9EkfZsmVJS0u7\ndl8PDw9ycnIAaN26NStXruSdsW8z4c0x2H7bAAajJs9JCCEKQvNCrlOnDjNnziQkJITLly8zevRo\nSpcN4PKGWZz9cCCBZXw5sO83ypUrx7Bhw+jcuTP3338/AMOGDaNhw4YMGjSIpk2bEhMTQ/PmzZk1\ncyYjhj+FM/7/SN+3WeNnKIQQeaOoqprnwWFhYWpcXFwRxrkqsGoNLl28yGtjXuG1V8fkYVrj5k6c\nOEG7Dp1JPJPI/DmfMWjQoEJOKoQQt6coSryqqmG3G6f5HPLNPPzwYMKbNKJ37953tJ2aNWuyJ34X\no55/kSZNmhRSOiGEKBq63EMWQgh3ktc9ZM3nkIUQQlzlMoW8fv166tSpQ3BwMBMmTLjh9o8//pgG\nDRrQuHFjIiIiOHDggAYphRCi4FxiysLhcFC7dm02btxIUFAQ4eHhLFq0iHr16l0bk5qair+/PwCr\nVq1i1qxZrF+/vtizCiHEv7nVlMWuXbsIDg6mZs2amM1mBgwYwMqVK68b81cZA9hstgKvzBBCCK3o\ncpXFv509e5YqVapc+zwoKIidO288w9vMmTOZOnUq2dnZbNmypTgjCiHEHXOJPeSbTavcbA94xIgR\nHD9+nIkTJzJu3LjiiCaEEIXGJQo5KCiIxMTEa5+fOXOGwMDAXMcPGDCAFStWFEc0IYQoNPk6qKco\nygXgVNHFuaUGwGEgBwgBTgCZ/7jdE8j68+NSQCBwsDgDCiFELqqpqlrudoPyVchaUhQlEpgOGIG5\nqqq+oyjK20CcqqqrFEV5H2jP1cJOBkaqqrpfu8RCCJE/LlPIQgjh7lxiDlkIIUoCKWQhhNAJKWQh\nhNAJKWQhhNAJKWQhhNAJKWQhhNAJKWQhhNAJKWQhhNCJ/weEGsijqPvDnwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "# first diagram, indexed by prior=0\n", "sankey.add(flows=[1, -1, 0.1, 0.3],\n", " orientations=[0, 0, 1, -1],\n", " labels=['input', 'output', 'top', 'bottom'],\n", " pathlengths=[0, 0, 0.5, 1.0])\n", "sankey.add(flows=[1, -1],\n", " labels=['input2', 'output2'],\n", " trunklength=3.0,\n", " prior=0,\n", " connect=(1, 0))\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we understand the basics, we can also build a diagram that introduces that outputs the second system to the bottom (by using an orientation of -1)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[0, 0, 3, 1], flows=[ 1. -1. 0.1 0.3], tips=[[-0.38045018 0.1 ]\n", " [ 0.6947228 0. ]\n", " [-0.55 1.15804502]\n", " [-0.65 -1.57413506]], texts=[, , , ], patch=Poly((-0.25, 0.7) ...), text=Text(0,0,'')),\n", " Bunch(angles=[0, 3], flows=[ 1 -1], tips=[[ 0.6947228 0. ]\n", " [ 3.52517299 -1.1947228 ]], texts=[, ], patch=Poly((0.275173, 0.5) ...), text=Text(1.52517,0,''))]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nPwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "# first diagram, indexed by prior=0\n", "sankey.add(flows=[1, -1, 0.1, 0.3],\n", " orientations=[0, 0, 1, -1],\n", " labels=['input', 'output', 'top', 'bottom'],\n", " pathlengths=[0, 0, 0.5, 1.0])\n", "sankey.add(flows=[1, -1],\n", " orientations=[0, -1],\n", " labels=['input2', 'output2'],\n", " trunklength=3.0,\n", " prior=0,\n", " connect=(1, 0))\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Why not add a third branch to our system?" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Bunch(angles=[0, 0, 3, 1], flows=[ 1. -1. 0.1 0.3], tips=[[-0.38045018 0.1 ]\n", " [ 0.6947228 0. ]\n", " [-0.55 1.15804502]\n", " [-0.65 -1.57413506]], texts=[, , , ], patch=Poly((-0.25, 0.7) ...), text=Text(0,0,'')),\n", " Bunch(angles=[0, 0], flows=[ 1 -1], tips=[[ 0.6947228 0. ]\n", " [ 3.21989579 0. ]], texts=[, ], patch=Poly((0.275173, 0.5) ...), text=Text(1.52517,0,'')),\n", " Bunch(angles=[0, 0], flows=[ 1. -0.3], tips=[[ 3.21989579 0. ]\n", " [ 4.10138391 3.15 ]], texts=[, ], patch=Poly((3.05035, 0.75) ...), text=Text(3.55035,1.75,''))]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey()\n", "# first diagram, indexed by prior=0\n", "sankey.add(flows=[1, -1, 0.1, 0.3],\n", " orientations=[0, 0, 1, -1],\n", " labels=['input', 'output', 'top', 'bottom'],\n", " pathlengths=[0, 0, 0.5, 1.0])\n", "sankey.add(flows=[1, -1],\n", " orientations=[0, 0],\n", " labels=['input2', 'output2'],\n", " trunklength=3.0,\n", " prior=0,\n", " connect=(1, 0))\n", "sankey.add(flows=[1, -0.3],\n", " orientations=[1, -1],\n", " labels=['input3', 'output3'],\n", " prior=1,\n", " trunklength=2.5,\n", " connect=(1, 0))\n", "sankey.finish()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Final project: why MOOCs are hard " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, I'd like to finish this article by making a Sankey diagram with some stats from the MOOC I recently followed. It turns out that only a fraction (2%) of the learners that join a class actually get a statement of accomplishment. \n", "\n", "- Total learners joined: 14,460\n", "- Learners that visited the course: 9,720\n", "- Learners that watched a lecture: 7,047\n", "- Learners that browsed the forums: 3,059\n", "- Learners that submitted an exercise: 2,149\n", "- Learners that obtained a grade >70% (got an Statement of Accomplishment): 351\n", "\n", "I would like to represent this data with a Sankey diagram." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-69.520770818713231, 5.1500000000000012)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(8, 12))\n", "ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],\n", " title=\"Statistics from the 2nd edition of\\nfrom Audio Signal Processing for Music Applications by Stanford University\\nand Universitat Pompeu Fabra of Barcelona on Coursera (Jan. 2016)\")\n", "learners = [14460, 9720, 7047, 3059, 2149, 351]\n", "labels = [\"Total learners joined\", \"Learners that visited the course\", \"Learners that watched a lecture\",\n", " \"Learners that browsed the forums\", \"Learners that submitted an exercise\", \n", " \"Learners that obtained a grade >70%\\n(got a Statement of Accomplishment)\"]\n", "colors = [\"#FF0000\", \"#FF4000\", \"#FF8000\", \"#FFBF00\", \"#FFFF00\"]\n", "\n", "sankey = Sankey(ax=ax, scale=0.0015, offset=0.3)\n", "for input_learner, output_learner, label, prior, color in zip(learners[:-1], learners[1:], \n", " labels, [None, 0, 1, 2, 3],\n", " colors):\n", " if prior != 3:\n", " sankey.add(flows=[input_learner, -output_learner, output_learner - input_learner],\n", " orientations=[0, 0, 1],\n", " patchlabel=label,\n", " labels=['', None, 'quit'],\n", " prior=prior,\n", " connect=(1, 0),\n", " pathlengths=[0, 0, 2],\n", " trunklength=10.,\n", " rotation=-90,\n", " facecolor=color)\n", " else:\n", " sankey.add(flows=[input_learner, -output_learner, output_learner - input_learner],\n", " orientations=[0, 0, 1],\n", " patchlabel=label,\n", " labels=['', labels[-1], 'quit'],\n", " prior=prior,\n", " connect=(1, 0),\n", " pathlengths=[0, 0, 10],\n", " trunklength=10.,\n", " rotation=-90,\n", " facecolor=color)\n", "diagrams = sankey.finish()\n", "for diagram in diagrams:\n", " diagram.text.set_fontweight('bold')\n", " diagram.text.set_fontsize('10')\n", " for text in diagram.texts:\n", " text.set_fontsize('10')\n", "ylim = plt.ylim()\n", "plt.ylim(ylim[0]*1.05, ylim[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2017 addendum: google charts sankey diagrams " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Following a question by a reader, I'll try to imitate the Sankey tutorial found on google charts: ." ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sankey = Sankey(head_angle=180)\n", "# block A\n", "sankey.add(flows=[18, -5, -7, -6],\n", " orientations=[0, 0, 0, 0],\n", " labels=['inA', 'A->X', 'A->Y', 'A->Z'],\n", " trunklength=15, alpha=0.1)\n", "# block B\n", "sankey.add(flows=[15, -2, -9, -4],\n", " orientations=[0, 0, 0, 0],\n", " labels=['inB', 'B->X', 'B->Y', 'B->Z'], \n", " trunklength=15, alpha=0.1)\n", "# block X\n", "sankey.add(flows=[5, 2, -7],\n", " orientations=[0, 0, 0],\n", " prior=0, \n", " connect=(1, 0), labels=['inA', 'inB', 'outX'],\n", " trunklength=5)\n", "# block Y\n", "sankey.add(flows=[7, 9, -16],\n", " orientations=[0, 0, 0],\n", " prior=0, \n", " connect=(2, 0), labels=['inA', 'inB', 'outY'],\n", " trunklength=5)\n", "# block Z\n", "sankey.add(flows=[6, 4, -10],\n", " orientations=[0, 0, 0],\n", " prior=1,\n", " connect=(3, 1), labels=['inA', 'inB', 'outZ'],\n", " trunklength=5)\n", "sankey.finish();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I believe the current matplotlib sankey API is not well suited to drawing diagrams like the one in Google charts." ] } ], "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.1" }, "toc": { "colors": { "hover_highlight": "#DAA520", "navigate_num": "#000000", "navigate_text": "#333333", "running_highlight": "#FF0000", "selected_highlight": "#FFD700", "sidebar_border": "#EEEEEE", "wrapper_background": "#FFFFFF" }, "moveMenuLeft": true, "nav_menu": { "height": "119px", "width": "253px" }, "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 4, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false, "widenNotebook": false } }, "nbformat": 4, "nbformat_minor": 1 }