Pythonのツリーマップは、矩形を部分的に分割してデータを視覚化するものです。
各サブパーツの大きさは、それが表すデータに比例しています。
これは円グラフのようなものです。
しかし、円グラフと比較して、ツリーマップはより複雑なデータを表現することができます。
1つの値がどのように全体を構成しているかを視覚化することができます。
また、トレマップチャートでは、ネストされた長方形を使って階層的なデータを視覚化することができます。
この記事では、PythonのSquarifyライブラリを使って、Pythonでトレマップを描く方法を学びます。
まず、Squarifyをインストールすることから始めましょう。
pip install squarify |
import matplotlib.pyplot as plt
import squarify
|
Squarify を使って Python でツリーマップを描画する
Squarifyをインストールしたら、まずノートブックにインポートしましょう。
matplotlibもインポートしましょう。
import matplotlib.pyplot as plt
import squarify
sizes = [40, 30, 5, 25]
squarify.plot(sizes)plt.show() |
1. 基本的なツリーマップの描画
非常に基本的なツリーマップを描くには、それぞれの矩形の値が必要なだけです。
トレマップをプロットすると、矩形はこれらの値に比例して配置されます。
import matplotlib.pyplot as plt
import squarify
sizes=[40, 30, 5, 25]
label=["A", "B", "C", "D"]
squarify.plot(sizes=sizes, label=label, alpha=0.6 )
plt.show() |
import matplotlib.pyplot as plt
import squarify
sizes=[40, 30, 5, 25]
label=["A", "B", "C", "D"]
color=['red','blue','green','grey']
squarify.plot(sizes=sizes, label=label, color=color, alpha=0.6 )
plt.show() |
2. ツリーマップにラベルを追加する
Pythonで以下のコードを使って、treemapにラベルを追加することができます。
plt.axis('off')
|
import matplotlib.pyplot as plt
import squarify
sizes=[40, 30, 5, 25]
label=["A", "B", "C", "D"]
color=['red','blue','green','grey']
squarify.plot(sizes=sizes, label=label, color=color, alpha=0.6 )
plt.axis('off')
plt.show() |
同じコードをもう一度実行すると、次のような出力が得られます。
import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic.head() |
実行するたびにトレマップの配色が変わっているのがわかると思います。
矩形の色はランダムに選ばれています。
また、Treemap には色とサイズ、ラベルを指定するオプションも用意されています。
次はトレマップの色を変更する方法を学びます。
3. ツリーマップの色を変更する
Python でトレマップの色を変更するには、トレマップの色を指定したリストを作成します。
そしてそのリストをsquarify.plotメソッドに渡してください。
n = titanic.groupby('class')[['survived']].sum()
|
a = titanic.groupby('class')[['survived']].sum().index.get_level_values(0).tolist()
print(a)
|
4. プロット軸をオフにする
プロット軸を使わずにツリーマップを描画するには
['First', 'Second', 'Third'] |
このコード行はプロット軸をオフにします。
完全なコードは以下の通りです。
d = titanic.groupby('class')[['survived']].sum().reset_index().survived.values.tolist()
print(d)
|
[136, 87, 119] |
データセットのトレマップをプロットする
この記事では、データセットにトレースマップを作成する方法を学びます。
ここでは titanic データセットを使用します。
まず、データセットをインポートするところから始めましょう。
データセットのインポートを簡単にするために、seaborn ライブラリを使います。
1. データセットのインポート
seabornライブラリのtitanicデータセットをPythonノートブックにインポートするには、次のようにします。
squarify.plot(sizes=d, label=a, alpha=.8)
plt.axis('off')
plt.show() |
import seaborn as sns
import squarify
import matplotlib.pyplot as plt
titanic = sns.load_dataset('titanic')
a = titanic.groupby('class')[['survived']].sum().index.get_level_values(0).tolist()
d = titanic.groupby('class')[['survived']].sum().reset_index().survived.values.tolist()
squarify.plot(sizes=d,label=a, alpha=.8 )
plt.axis('off')
plt.show() |
このデータセットには、タイタニック号の乗客に関する情報が含まれています。
このデータセットには、タイタニック号の乗客に関する情報が含まれており、乗客のクラス別に生存者を樹形図で表したいと思います。
元の形式のデータでは、ツリーマップを描くのに適していない。
そこで、いくつかの操作を行って、樹形図を描くのに使えるようなデータを抽出することにします。
各クラスの生存者を得るために、データにgroup byメソッドを使用します。
2. プロット用データの準備
以下のように、データセットに対して groupby 関数を使用することができます。


これは、生存者数の合計をクラスごとにグループ化したものです。
ここからデータとラベルをリストとして抽出する必要があります。

結果は以下の通りです。

これで、ラベルがリスト形式で得られる。

結果は以下の通りです。

これで、ラベルとデータがリストとして得られました。
これらを使ってツリーマップを描くことができます。
3. トレマップのプロット
トレマップをプロットするには、次のコードを使ってください。


ツリーマップを視覚化することで、1級、2級、3級の生存者の数を大まかに把握することができます。
ツリーマップを見ただけで、2番目のクラスが最も生存者が少ないということが確信できます。
Pythonでtreemapをプロットする完全なコード
このセクションの完全なコードは以下の通りです。

まとめ
この記事では、PythonでSquarifyを使用してツリーマップをプロットする方法を学びました。
私たちと一緒に楽しく学べたことを願っています。