Plotly ツリーマップ
このチュートリアルでは、Python で Plotly の treemap()
関数を使用してツリーマップチャートを作成する方法について説明します。
Python で Plotly の treemap()
関数を使用してツリーマップチャートを作成する
ツリーマップチャートは、データをチャート上のネストされた長方形として表します。plotly.express
の treemap()
関数を使用して、Python でツリーマップチャートを作成できます。ツリーマップチャートを作成するには、親の名前を定義して、treemap()
関数内に渡す必要があります。
たとえば、Tony
には Emily
と Draco
の 2 人の子供がいて、Emily
には Andree
と Jason
という 2 人の子供がいて、Draco
には Peter
という 1 人の子供がいるという家族のツリーマップを作成してみましょう。
リスト内の家族のすべての名前を定義して names 引数に渡し、次に各メンバーの親を定義して parents
引数に渡します。
以下のコードを参照してください。
import plotly.express as px
names = ["Tony", "Andree", "Jason", "Emily", "Petter", "Draco"]
parents = ["", "Emily", "Emily", "Tony", "Draco", "Tony"]
fig = px.treemap(names=names, parents=parents)
fig.show()
出力:
Tony
には親がないため、parents
リストの最初の要素は空です。width と height 引数を使用して、プロットの幅と高さを設定できます。
color 引数を使用すると、デフォルトの色シーケンスを使用して、各長方形に異なる色を与えることができます。title
引数を使用して、ヒストグラムにタイトルを付けることができます。
hover_name
引数を使用してホバータイトルを変更し、その値を入力データと同じサイズのリストに設定できます。ids
引数を使用して、各三角形に異なる ID を与えることができます。
たとえば、上記のプロパティを変更してみましょう。以下のコードを参照してください。
import plotly.express as px
names = ["Tony", "Andree", "Jason", "Emily", "Petter", "Draco"]
parents = ["", "Emily", "Emily", "Tony", "Draco", "Tony"]
fig = px.treemap(
names=names,
parents=parents,
color=names,
title="Family Treemap",
hover_name=names,
ids=names,
)
fig.show()
出力:
color_discrete_sequence
という引数を使って、デフォルトのカラーシーケンスを変更することができます。color_discrete_sequence
引数を使ってデフォルトの色の並びを変更することができます。この色の並びは、Plotly がサポートしている Dark24
や Light24
などの色の並びに設定できます。
たとえば、上記のヒストグラムのカラーシーケンスを変更してみましょう。以下のコードを参照してください。
import plotly.express as px
names = ["Tony", "Andree", "Jason", "Emily", "Petter", "Draco"]
parents = ["", "Emily", "Emily", "Tony", "Draco", "Tony"]
fig = px.treemap(
names=names,
parents=parents,
color=names,
color_discrete_sequence=px.colors.qualitative.Light24,
)
fig.show()
出力:
カラーシーケンスを使用する代わりに、color_discrete_map
引数を使用して各長方形に任意の色を与えることもできます。この引数は、デフォルトの色を上書きするために使用されます。
いくつかの長方形の色を変更するだけの場合、残りはカラーシーケンスから割り当てられます。たとえば、最初の 2つの長方形の色を黄色と黒に変更してみましょう。
以下のコードを参照してください。
import plotly.express as px
names = ["Tony", "Andree", "Jason", "Emily", "Petter", "Draco"]
parents = ["", "Emily", "Emily", "Tony", "Draco", "Tony"]
fig = px.treemap(
names=names,
parents=parents,
color=names,
color_discrete_sequence=px.colors.qualitative.Light24,
color_discrete_map={"Tony": "yellow", "Emily": "black"},
)
fig.show()
出力:
データフレームを使用してツリーマップチャートを作成することもできます。たとえば、2007 年の世界の平均余命データを読み、大陸名を親、国名を子としてツリーマップを作成しましょう。
以下のコードを参照してください。
import plotly.express as px
df = px.data.gapminder().query("year == 2007")
fig = px.treemap(
df,
path=[px.Constant("world"), "continent", "country"],
color="lifeExp",
hover_data=["country"],
color_continuous_scale="RdBu",
)
fig.show()
出力: