#!/usr/bin/env python # coding: utf-8 # #### New to Plotly? # Plotly's Python library is free and open source! [Get started](https://plotly.com/python/getting-started/) by downloading the client and [reading the primer](https://plotly.com/python/getting-started/). #
You can set up Plotly to work in [online](https://plotly.com/python/getting-started/#initialization-for-online-plotting) or [offline](https://plotly.com/python/getting-started/#initialization-for-offline-plotting) mode, or in [jupyter notebooks](https://plotly.com/python/getting-started/#start-plotting-online). #
We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/python_cheat_sheet.pdf) (new!) to help you get started! # #### Version Check # Plotly's python package is updated frequently. Run `pip install plotly --upgrade` to use the latest version. # In[2]: import plotly plotly.__version__ # ### Basic Sankey Diagram # In[3]: import plotly.plotly as py data = dict( type='sankey', node = dict( pad = 15, thickness = 20, line = dict( color = "black", width = 0.5 ), label = ["A1", "A2", "B1", "B2", "C1", "C2"], color = ["blue", "blue", "blue", "blue", "blue", "blue"] ), link = dict( source = [0,1,0,2,3,3], target = [2,3,3,4,4,5], value = [8,4,2,8,4,2] )) layout = dict( title = "Basic Sankey Diagram", font = dict( size = 10 ) ) fig = dict(data=[data], layout=layout) py.iplot(fig, validate=False) # ### Create Sankey Canvas # In[4]: import plotly.plotly as py data = dict( type='sankey', domain = dict( x = [0,1], y = [0,1] ), orientation = "h", valueformat = ".0f", valuesuffix = "TWh" ) layout = dict( title = "Energy forecast for 2050
Source: Department of Energy & Climate Change, Tom Counsell via Mike Bostock", font = dict( size = 10 ) ) # ### Add Nodes # In[5]: import plotly.plotly as py import urllib, json url = 'https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy.json' response = urllib.urlopen(url) data = json.loads(response.read()) data_trace = dict( type='sankey', domain = dict( x = [0,1], y = [0,1] ), orientation = "h", valueformat = ".0f", valuesuffix = "TWh", node = dict( pad = 15, thickness = 15, line = dict( color = "black", width = 0.5 ), label = data['data'][0]['node']['label'], color = data['data'][0]['node']['color'] ) ) layout = dict( title = "Energy forecast for 2050
Source: Department of Energy & Climate Change, Tom Counsell via Mike Bostock", font = dict( size = 10 ) ) # ### Add Links # In[6]: import plotly.plotly as py import urllib, json url = 'https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy.json' response = urllib.urlopen(url) data = json.loads(response.read()) data_trace = dict( type='sankey', width = 1118, height = 772, domain = dict( x = [0,1], y = [0,1] ), orientation = "h", valueformat = ".0f", valuesuffix = "TWh", node = dict( pad = 15, thickness = 15, line = dict( color = "black", width = 0.5 ), label = data['data'][0]['node']['label'], color = data['data'][0]['node']['color'] ), link = dict( source = data['data'][0]['link']['source'], target = data['data'][0]['link']['target'], value = data['data'][0]['link']['value'], label = data['data'][0]['link']['label'] )) layout = dict( title = "Energy forecast for 2050
Source: Department of Energy & Climate Change, Tom Counsell via Mike Bostock", font = dict( size = 10 ) ) fig = dict(data=[data_trace], layout=layout) py.iplot(fig, validate=False) # ### Style Sankey Diagram # In[10]: import plotly.plotly as py import urllib, json url = 'https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy_dark.json' response = urllib.urlopen(url) data = json.loads(response.read()) data_trace = dict( type='sankey', width = 1118, height = 772, domain = dict( x = [0,1], y = [0,1] ), orientation = "h", valueformat = ".0f", valuesuffix = "TWh", node = dict( pad = 15, thickness = 15, line = dict( color = "black", width = 0.5 ), label = data['data'][0]['node']['label'] ), link = dict( source = data['data'][0]['link']['source'], target = data['data'][0]['link']['target'], value = data['data'][0]['link']['value'], label = data['data'][0]['link']['label'] )) layout = dict( title = "Energy forecast for 2050
Source: Department of Energy & Climate Change, Tom Counsell via Mike Bostock", font = dict( size = 10, color = 'white' ), plot_bgcolor = 'black', paper_bgcolor = 'black' ) fig = dict(data=[data_trace], layout=layout) py.iplot(fig, validate = False) # ### Reference # # See [https://plotly.com/python/reference/#sankey](https://plotly.com/python/reference/#sankey) for more information and options! # In[11]: from IPython.display import display, HTML display(HTML('')) display(HTML('')) get_ipython().system(' pip install git+https://github.com/plotly/publisher.git --upgrade') import publisher publisher.publish( 'sankey.ipynb', 'python/sankey-diagram/', 'Sankey Diagram', 'How to make Sankey Diagrams in Python with Plotly.', title = 'Sankey Diagram | Plotly', has_thumbnail='true', thumbnail='thumbnail/sankey.jpg', language='python', display_as='basic', order=11, ipynb= '~notebook_demo/151') # In[ ]: