#!/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[ ]: