Pythonとmatplotlibを使ってTreemapを描画(プロット)する方法

スポンサーリンク

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 関数を使用することができます

Squarify
Squarify
Treemap
Treemap

これは、生存者数の合計をクラスごとにグループ化したものです。


ここからデータとラベルをリストとして抽出する必要があります。

Lables
Labels

結果は以下の通りです。

Labels

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

Changing Color
Changing Color

結果は以下の通りです。

Plot Axis Off
Plot Axis Off

これで、ラベルとデータがリストとして得られました。

これらを使ってツリーマップを描くことができます。

3. トレマップのプロット

トレマップをプロットするには、次のコードを使ってください。

Titanic Dataset
Titanic Dataset
Groupby
Groupby

ツリーマップを視覚化することで、1級、2級、3級の生存者の数を大まかに把握することができます

ツリーマップを見ただけで、2番目のクラスが最も生存者が少ないということが確信できます。

Pythonでtreemapをプロットする完全なコード

このセクションの完全なコードは以下の通りです。

Titanic Treemap
Titanic Treemap

まとめ

この記事では、PythonでSquarifyを使用してツリーマップをプロットする方法を学びました。

私たちと一緒に楽しく学べたことを願っています。

タイトルとURLをコピーしました