Plotly ツリーマップ

Ammar Ali 2022年4月12日
Plotly ツリーマップ

このチュートリアルでは、Python で Plotly の treemap() 関数を使用してツリーマップチャートを作成する方法について説明します。

Python で Plotly の treemap() 関数を使用してツリーマップチャートを作成する

ツリーマップチャートは、データをチャート上のネストされた長方形として表します。plotly.expresstreemap() 関数を使用して、Python でツリーマップチャートを作成できます。ツリーマップチャートを作成するには、親の名前を定義して、treemap() 関数内に渡す必要があります。

たとえば、Tony には EmilyDraco の 2 人の子供がいて、Emily には AndreeJason という 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 がサポートしている Dark24Light24 などの色の並びに設定できます。

たとえば、上記のヒストグラムのカラーシーケンスを変更してみましょう。以下のコードを参照してください。

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()

出力:

データフレームのツリーマップ

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - Plotly Plot