Yoshi Nishikawa Blog

医学となにかのインタラクティブ

Python plotlyを用いてSankey Diagram(サンキーダイアグラム)を作成する

Sankey Diagram(サンキーダイアグラム)

plot.ly

このダイアグラム、お金の流れや、エネルギーの流れなどでよく目にしますが、
Sankey Diagram(サンキーダイアグラム)と言うそうです。

Sankey Diagram(サンキー・ダイアグラム)は工程間の流量を表現する図表です。
矢印の太さで流れの量を表し、特にエネルギーや物資、経費等の変位を表す為に使われます。
Sankeyの名前の由来は1898年に初めてこの形式の表を用いた蒸気機関におけるエネルギー効率についての記事の著者であるアイルランド人M.H.サンキーに因む。
出典: サンキー ダイアグラム - Wikipedia

ベーシックなSankey Diagramを作成する

plotlyのウェブサイトを参考に、
Sankey Diagramを作ってみました。

コードの例は下に載せておきます。

f:id:yoshi_nishikawa:20181120144058p:plain

#plotlyをofflineで呼び出して

import plotly.plotly as py
import plotly.offline as offline
offline.init_notebook_mode(connected=False)


data = dict(
    type='sankey',
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(
        color = "black",
        width = 0.5
      ),
      label = ["い", "ろ", "は", "に", "ほ", "へ"], #各nodeを作成 
      color = ["blue", "blue", "green", "green", "yellow", "yellow"] #色を指定します。
    ),
    link = dict(
      source = [0,1,1,0,2,3,3], #sourceは出発元のnode  
      target = [2,2,3,3,4,4,5], #targetは到着先のnode  
      value = [8,1,3,2,9,3,2] #流量
  ))

layout =  dict(
    title = "Sankey Diagram はじめました",
    font = dict(
      size = 10
    )
)

fig = dict(data=[data], layout=layout)
offline.plot(fig, validate=False)