シャンキーダイアグラムを描いてビジネスフローを可視化する - ハイブの収益構造分析の例
1812年のナポレオンのロシア遠征で数十万人の兵士が姿を消し、それを視覚的にうまく表現したのがこの作品です。 サンキーダイアグラム(Sankey Diagram)です。データの流れの始まりと終わりを線の太さで示し、各比率を直感的に伝えるこのダイアグラムは、ビジネスの収益とコスト構造を視覚化するのに非常に便利です。

今回の記事では、シャンキーダイアグラムを描くための サンキーネットワーク(SankeyNetwork)パッケージのオプションと使い方を簡単に説明し、Hiveの2024年第3四半期の収益構造をシャンキーダイアグラムで表現してみましょう。 さあ、シャンキーダイアグラムを描いてみましょう。
生キーネットワークとは何ですか?
生キーネットワーク(サンキーネットワーク)は、データの流れと比率を視覚的に表現するRの networkD3 パッケージ関数です。シャンキーダイアグラムの描画で、各フローの始まりと終わり、そして接続線の太さはデータを構成する比率を意味します。 各フローの太さでデータの量と方向を直感的に理解することができ、ビジネス収益およびコストフローの分析に優れています。
生キーネットワークの基本骨格と主なオプション紹介
シャンキーダイアグラムを描くために知っておくべきいくつかの重要な要素とオプションがあります。初心者でも理解しやすいように説明します。
- Nodes (ノード)を定義します:データの出発点と到着点を定義します。 各ノードは特定のポイントを意味し、テキストや名前で表示することができます。
- Links(リンク):各ノードを結ぶ線で、データの流れを表しています。例えば、「総売上高」から「レコード/音源」につながったリンクは、その売上の一部を意味します。
- sourceとtargetを指定します:リンクがどこからどこへ向かうかを指定します。 source は開始ノードを、target は到着ノードを意味します。
- value (値)を指定します:リンクの太さを決定する値で、この値が大きいほど接続線が太くなります。これにより、流れの大きさを視覚的に強調することができます。
- ノードID: 各ノードに表示するテキストを定義するオプションです。
- units (単位): 表示される単位を定義して、データをより直感的に理解できるようにします。
- その他のスタイルオプション:
- フォントサイズ: ノードとリンクの文字サイズを指定します。
- nodeWidth: ノードの幅を調整して読みやすさを向上させることができます。
Hiveの2024年第3四半期の収益およびコスト構造データ
ハイブの収益と費用の流れをシャンキーダイアグラムで表現するために、以下のデータを使用します:
1. 総売上高5,278億ウォン
- レコード/音源.2,144億円2,144億ウォン
- 公演739億ウォン
- 広告/出力燃料: 344億ウォン
- MD・ライセンシング991 億ウォン
- 内容797 億ウォン
- ファンクラブ:259億ウォン
2. 売上総利益.2,404億ウォン2,404億ウォン(総売上高の45.5%)
3. 営業利益541 億ウォン(総売上高の 10.2%)
4. 営業費用1,862億ウォン
- 人件費956 億ウォン
- 営業外損失527億ウォン
- 運搬費122億ウォン
- 償却費197億ウォン
- 著作権料およびその他の手数料144億ウォン
5. 純利益14億ウォン(総売上高の0.2%)
生キーネットワークパッケージのインストールとデータ準備
それでは、生キー図を描いてみましょう。 networkD3パッケージとSankeyNetwork関数を使ってデータを準備してみます。
# パッケージのインストールとロード
if (!require("networkD3"))を呼び出す{}。
install.packages("networkD3")
}
library(networkD3)
# ハイブの収益構造データ生成
nodes <- data.frame(name = c("Total Revenue", "Album/Digital", "Concert", "Advertisement", "MD & Licensing"、
"Content", "Fan Club", "Gross Profit", "Operating Profit", "Operating Expenses", "Net Profit"、
"営業外損失","人件費","交通費","減価償却費","家賃/管理費"、
"手数料", "その他管理費"))
# linksのsourceとtargetを0から始まるインデックスに修正する。
links <- data.frame(
source = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8)、
target = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)、
value = c(2144, 739, 344, 991, 797, 259, 2404, 1862, 541, 14, 527, 956, 122, 197, 144, 363, 78)
)コードの説明:
- パッケージのインストールとロード:
networkD3パッケージがインストールされているか確認し、インストールされていない場合はインストールを進めます。library(networkD3)コマンドでパッケージをロードします。
- データフレーム生成:
ノードデータフレーム: 生キー図に使用されるノード(構成要素)の名前を定義します。- 総売上高、各収入/費用項目など18個のノードで構成されています。
- リンクデータフレーム生成:
リンクデータフレーム:ノード間の接続と金額情報を定義します。
SankeyNetwork関数を使用して生キー図を描画する
それでは、準備したデータをSankeyNetwork関数で可視化してみましょう。
# シャンキーダイアグラム生成
sankey <- sankeyNetwork(Links = links、
Nodes = nodes、
Source = "source"、
Target = "target"、
Value = "value"、
NodeID = "name"、
units = "億ウォン"、
fontSize = 12、
nodeWidth = 30)
# ダイアグラム表示
print(sankey)コードの説明:
- シャンキーダイアグラムの作成:
sankeyNetwork()関数を使用してシャンキーダイアグラムを生成します。- このとき、次のような引数を渡します:
リンク=リンク: 先に用意したリンクデータフレームを渡します。ノード = ノード: 先に準備したノードデータフレームを渡します。出典 = "ソース": linksデータフレームのsource列を使うという意味です。ターゲット = "ターゲット": linksデータフレームのtarget列を使うという意味です。Value = "値": links データフレームの value 列を使うという意味です。NodeID = "name": nodes データフレームのname列をノード名として使うという意味です。単位 = "億ウォン": 金額単位を「億ウォン」で表示するという意味です。fontSize = 12: ノードとリンクの文字サイズを12に設定します。nodeWidth = 30:ノードの幅を30に設定します。
- ダイアグラム表示:
プリント(サンキー)コマンドで生成されたシャンキーダイアグラムを出力/表示します。

締めくくり: 生キーダイアグラムによる直感的なビジネス分析
ハイブの収益構造をシャンキーダイアグラムで視覚化すると、複雑な収益の流れが一目瞭然ですね。 SankeyNetwork(SankeyNetwork)は、ビジネスの収益と費用の流れを直感的に表現するのにとても役立ちます。皆さんも複雑なデータを簡単に表現したいなら、このパッケージを試してみてください。
ちなみに、シャンキーダイアグラムより不思議ではありませんが、最近ニューラルネットワークの話をたくさん聞いたことがあるはずですが、そのニューラルネットワークを一度絵で実装してみたいと思いませんか? 私だけでしょうか? Rでニューラルネットワークを描く:ラインごとの説明で理解するニューラルネットワーク構造の描画(feat. neuralnet) ポスト一度見てみませんか? シャンキーダイアグラムを描くのと同じくらい楽しいです。






