👀
Crash Visualization
  • Welcome
  • Preface
    • Who the book is written for
    • How the book is organized
  • 1. Introduction of Data Visualization
    • 1.1 What is data visualization?
    • 1.2 Why does visualization matter?
  • 2. Tricks in Visualization
    • 2.1 Choose Appropriate Chart
    • 2.2 Features of Charts
      • 2.2.1 Table
      • 2.2.2 Column Chart
      • 2.2.3 Line Chart
      • 2.2.4 Pie Chart
      • 2.2.5 Scatter Chart
      • 2.2.6 Map Chart
    • 2.3 Misused Graph
    • 2.4 Tips in Visualization
  • 3. Matplotlib
    • 3.1 Basic Concepts
    • 3.2 Line Chart
    • 3.3 Area Chart
    • 3.4 Column Chart
    • 3.5 Histogram Chart
    • 3.6 Scatter Chart
    • 3.7 Lollipop Chart
    • 3.8 Pie Chart
    • 3.9 Venn Chart
    • 3.10 Waffle Chart
    • 3.11 Animation
  • 4. Seaborn
    • 4.1 Trends
    • 4.2 Ranking
      • 4.2.1 Barplot
      • 4.2.2 Boxplot
    • 4.3 Composition
      • 4.3.1 Stacked Chart
    • 4.4 Correlation
      • 4.4.1 Scatter Plot
      • 4.4.2 Linear Relationship
      • 4.4.3 Heatmap
      • 4.4.4 Pairplot
    • 4.5 Distribution
      • 4.5.1 Boxplot
      • 4.5.2 Violin plot
      • 4.5.3 Histogram plot
      • 4.5.4 Density plot
      • 4.5.5 Joint plot
  • 5. Bokeh
    • 5.1 Basic Plotting
    • 5.2 Data Sources
    • 5.3 Annotations
    • 5.4 Categorical Data
    • 5.5 Presentation and Layouts
    • 5.6 Linking and Interactions
    • 5.7 Network Graph
    • 5.8 Widgets
  • 6. Plotly
    • 6.1 Fundamental Concepts
      • 6.1.1 Plotly Express
      • 6.1.2 Plotly Graph Objects
    • 6.2 Advanced Charts
      • 6.2.1 Advanced Scatter Chart
      • 6.2.2 Advanced Bar Chart
      • 6.2.3 Advanced Pie Chart
      • 6.2.4 Advanced Heatmap
      • 6.2.5 Sankey Chart
      • 6.2.6 Tables
    • 6.3 Statistical Charts
      • 6.3.1 Common Statistical Charts
      • 6.3.2 Dendrograms
      • 6.3.3 Radar Chart
      • 6.3.4 Polar Chart
      • 6.3.5 Streamline Chart
    • 6.4 Financial Charts
      • 6.4.1 Funnel Chart
      • 6.4.2 Candlestick Chart
      • 6.4.3 Waterfall Chart
  • Support
    • Donation
Powered by GitBook
On this page
  • 1. Basic Sankey Chart
  • 2. Customized Sankey Chart
  • 3. Vertical Sankey Chart

Was this helpful?

  1. 6. Plotly
  2. 6.2 Advanced Charts

6.2.5 Sankey Chart

Previous6.2.4 Advanced HeatmapNext6.2.6 Tables

Last updated 4 years ago

Was this helpful?

Sankey diagrams visualize the contributions to flow by defining source to represent the source node, target for the target node, value to set the flow volume, and label that shows the node name.

if a flow is twice as wide it represents double the quantity. Flows in the diagram can show e.g. energy, materials, water, or costs.

  • The link is a dictionary containing data about the connections we want to draw.

  • The source and target are lists of indexes for the nodes Plotly will connect.

  • The value is a list of numbers that will define the width of these connections.

1. Basic Sankey Chart

label = ["ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE"]
source = [0, 0, 1, 1, 0]
target = [2, 3, 3, 5, 4]
value = [8, 3, 2, 8, 4]

link = dict(source = source, target = target, value = value)
node = dict(label = label, pad=50, thickness=5)
data = go.Sankey(link = link, node=node)

fig = go.Figure(data)
fig.show()

2. Customized Sankey Chart

label = ["ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE"]
source = [0, 0, 1, 1, 0]
target = [2, 3, 3, 5, 4]
value = [8, 3, 2, 8, 4]

# add color list
colors = ['#F27420','#4994CE','#FABC13','#7FC241','#EC2272']

# data to dict, dict to sankey
link = dict(source = source, target = target, value = value,color = colors)
node = dict(label = label, pad=50, thickness=5)
data = go.Sankey(link = link, node=node)
# plot
fig = go.Figure(data)
fig.update_layout(height=600,font_size = 14) # set figure and font size
fig.show()

3. Vertical Sankey Chart

It's very easy to make the chart in vertical, just address orientation = 'v'. However, the horizontal Sankey chart is in common use.

link = dict(source = source, target = target, value = value,color = colors)
node = dict(label = label, pad=50, thickness=5)
data = go.Sankey(link = link, node=node, orientation = 'v')
# plot
fig = go.Figure(data)