Plotly Express⑳(ポーラチャート)

ポーラチャートは、各変数が放射状の座標軸をもち、値が点や線、扇形の面積で表現されます。

データの読み込み

まずはデータを読み込みます。

準備するデータは風力データセット(風向きや風の強さ)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

wind = px.data.wind()
wind.head()

[実行結果]

ポーラチャート

ポーラチャートを描画するには、下記の関数を使用します。

  • scatter_polar
    散布図(点で描画)
  • line_polar
    レーダチャート(線で描画)
  • bar_polar
    鶏頭図(棒で描画)

引数rに極座標の原点からの距離を与える列名を指定し、引数thetaには角度(度数法)となる列名を指定します。

引数thetaに離散値が渡された場合は角度が等間隔に割り当てられます。

下記のコードでは、値にfequency列、角度にdirection列を指定してポーラチャートを描画しています。

また引数colorstrength列を渡して、積み上げで表現しています。

[Google Colaboratory]

1
2
3
4
5
px.bar_polar(wind,              # データセット
r="frequency", # 値
theta="direction", # 角度
color="strength", # strengthで分割して積み上げ
).show()

[実行結果]

Plotly Express⑲(三角図)

三角図は、3変数のデータの関係を正三角形で表現したグラフです。

正三角形の各辺が変数となり、各変数の比率を要素から各辺の垂線の長さで表現しています。

データの読み込み

まずはデータを読み込みます。

準備するデータは選挙データセット(地域と投票結果)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

election = px.data.election()
election.head()

三角図

三角図を表示するには次の関数の引数a,b,cに値となる列名を渡します。

  • scatter_ternary関数
    点で描画を行う。
  • line_ternary関数
    線で描画を行う。

下記のコードでは、Joy列、Coderre列、Begeron列の三角図を描画します。

またwinner列で色分けを行い、total列を要素の大きさで表現しています。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
px.scatter_ternary(election,                # データセット
a="Joly", # 左下から上に表示する列
b="Coderre", # 右下から左下に表示する列
c="Bergeron", # 上から右下に表示する列
color="winner", # 色分けする列
size="total", # 要素の大きさ
size_max=15, # 要素の大きさの最大値
hover_name="district" # ホバーツールのタイトル
).show()

[実行結果]

Plotly Express⑱(平行プロット)

平行プロットは前回記事の平行座標プロットと同じような可視化を行います。

平行座標プロットが連続値を扱うのに対し、平行プロットは離散値を扱います。

データの読み込み

まずはデータを読み込みます。

準備するデータはtipsデータセット(レストランの支払金額とチップの金額)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

tips = px.data.tips()
tips.head()

平行プロット

平行プロットを描画するにはparallel_categories関数を使います。

引数dimensionsには対象となる列を指定します。(省略した場合にはすべての列が描画対象となります)

引数colorに列名を渡すと、その列の値で色分けします。

[Google Colaboratory]

1
2
3
4
5
6
px.parallel_categories(
tips,
dimensions=["sex", "smoker", "time", "day"], # 対象列を指定
color="size", # size列で色分け
color_continuous_scale=px.colors.sequential.Inferno, # カラースケール
).show()

[実行結果]

平行座標プロットと同様に、ドラッグ操作で軸を移動できます。

縦軸内のカテゴリも上下に移動可能です。

横軸のtimeを一番左に移動し、縦軸のLunchを上に移動すると下記のようなグラフになります。

[実行結果(timeを一番左に移動し、Lunchを上に移動)]

Plotly Express⑰(平行座標プロット)

平行座標プロットは変数間の関係を平行に並べて表現します。

各変数を縦軸にとった座標を平行に配置し、要素の座標同士を線分で連結します。

データの関係性を可視化する場合、2変数の場合は散布図が向いていますが、平行座標プロットでは多変数の関係を可視化するのに向いています。

データの読み込み

まずはデータを読み込みます。

準備するデータはirisデータセット(アヤメの種類と特徴量)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

iris = px.data.iris()
iris.head()

平行座標プロット

平行座標プロットを描画するにはparallel_coordinates関数を使います。

引数のdimensionsに対象となる列を指定します。(省略した場合にはすべての列が描画対象となります)

引数のcolorに列名を渡すと、その列の値で色分けします。

[Google Colaboratory]

1
2
3
4
5
px.parallel_coordinates(
iris,
dimensions=["sepal_length", "sepal_width", "petal_length", "petal_width"],
color="species_id", # species_id列をカラースケールで表現
).show()

[実行結果]

上記に表示されている4変数の内、隣り合っていないsepal_lengthpetal_lengthの関係を確認したい場合、petal_lengthを左にドラッグすることで軸の位置を移動することができます。

[実行結果(petal_lengthを1つ左に移動)]

Plotly Express⑯(ツリーマップ)

ツリーマップは階層データを長方形の面積で表現します。

親の階層の長方形内に子の階層の長方形が描画されます。

データの読み込み

まずはデータを読み込みます。

準備するデータはgapminderデータセット(年・国ごとの平均寿命と一人当たりのGDP)の2007年分を抽出したものとなります。

[Google Colaboratory]

1
2
3
4
5
import plotly.express as px

gapminder = px.data.gapminder()
gapmider_2007 = gapminder[gapminder["year"] == 2007]
gapmider_2007.head()

ツリーマップ

ツリーマップを描画するにはtreemap関数を使います。

treemap関数の引数は下記の通りです。

  • path
    データの階層をリストで指定。
  • names
    セクタごとのラベルを指定。
  • parents
    親セクタのラベルを指定。最上位の階層に対する場合は空の文字列を指定。
  • values
    セクタごとの値を指定。
  • branchvalues
    値を合計する方法を指定。
    “total”:親が子の階層すべての合計値
    “remainder”:子が親とは別の値

continent(大陸)が親で、country(国)が子となるツリーマップを描画します。

数値はpop(人口)を設定しています。

[Google Colaboratory]

1
2
3
px.treemap(
gapminder_2007, path=["continent", "country"], values="pop"
).show()

[実行結果]

ツリーマップの特定の階層をクリックすると、その階層がドリルダウンして描画されます。

親の階層をクリックすると元に戻ります。

[実行結果(Europeを選択)]

Plotly Express⑮(サンバーストグラフ)

サンバーストグラフは階層をもつデータを円または円弧の面積で表現します。

内側の円が最上位の階層となり、円の外側に隣接している円弧が下位の階層となります。

上位階層が下位階層の合計値となる場合と、上位階層と下位階層が独立した値をもつ場合があります。

データの読み込み

まずはデータを読み込みます。

準備するデータはgapminderデータセット(年・国ごとの平均寿命と一人当たりのGDP)の2007年分を抽出したものとなります。

[Google Colaboratory]

1
2
3
4
5
import plotly.express as px

gapminder = px.data.gapminder()
gapmider_2007 = gapminder[gapminder["year"] == 2007]
gapmider_2007.head()

サンバーストグラフ

サンバーストグラフを描画するにはsunburst関数を使います。

sunburst関数の引数は下記の通りです。

  • path
    データの階層をリストで指定。
  • names
    セクタごとのラベルを指定。
  • parents
    親セクタのラベルを指定。最上位の階層に対する場合は空の文字列を指定。
  • values
    セクタごとの値を指定。
  • branchvalues
    値を合計する方法を指定。
    “total”:親が子の階層すべての合計値
    “remainder”:子が親とは別の値

continentが親で、countryが子となるサンバーストを描画します。

[Google Colaboratory]

1
2
3
px.sunburst(
gapminder_2007, path=["continent", "country"], values="pop"
).show()

[実行結果]

サンバーストグラフの特定の階層をクリックすると、その階層がドリルダウンして描画されます。

親の階層をクリックすると元に戻ります。

[実行結果]

Plotly Express⑭(円グラフ)

今回は円グラフを表示してみます。

データの読み込み

まずはデータを読み込みます。

準備するデータはtipsデータセット(レストランの支払金額とチップの金額)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

tips = px.data.tips()
tips.head()

円グラフ

円グラフを表示するためにはpie関数を使います。

引数のvaluesに値となる列名、namesにはラベルとなる列名を設定します。

[Google Colaboratory]

1
px.pie(tips, values="tip", names="day")

[実行結果]

tip(チップの金額)を値とし、day(曜日)で集計した円グラフを表示することができました。

Plotly Express⑬(ヒストグラム)

ヒストグラムとは、ある特定のデータを区間ごとに区切り、各区間の個数や数値のばらつきを棒グラフで表現するグラフです。

データの読み込み

まずはデータを読み込みます。

準備するデータはtipsデータセット(レストランの支払金額とチップの金額)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

tips = px.data.tips()
tips.head()

ヒストグラム

ヒストグラムを表示するためにはhistgram関数を使います。

引数のxには、表示するデータの列名を指定します。

[Google Colaboratory]

1
px.histogram(tips, x="total_bill").show()

[実行結果]

total_billを値としたヒストグラムを表示することができました。

ヒストグラム(積み上げ/サブプロット)

histogram関数引数colorに列名を渡すと、指定した列名で積み上げたヒストグラムとなります。

また、引数marginalに以下の文字列を設定すると、指定したグラフをサブプロットに表示することができます。

  • histogram
    ヒストグラム
  • box
    箱ひげ図
  • violin
    バイオリン図
  • rug
    ラグプロット

[Google Colaboratory]

1
2
3
4
5
6
px.histogram(tips,
x="total_bill",
color="sex", # sex列で分割して積み上げ
marginal="box", # 箱ひげ図をサブプロットで表示
hover_data=tips.columns # ホバーツールにすべて列の値を表示
).show()

[実行結果]

sex列のデータで積み上げられたヒストグラムを表示し、サブプロットに箱ひげ図を表示することができました。

Plotly Express⑫(バイオリン図)

バイオリン図は、カーネル密度推定グラフを上下または左右に並べたグラフです。

箱ひげ図に似ていますが、分布データがすべて含まれているため、ピーク位置の把握に向いています。

データの読み込み

まずはデータを読み込みます。

準備するデータはtipsデータセット(レストランの支払金額とチップの金額)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

tips = px.data.tips()
tips.head()

バイオリン図

バイオリン図を表示するためにはviolin関数を使います。

引数のxyには、表示するデータの列名を指定します。

その他の設定値に関してはコメントを参照してください。

[Google Colaboratory]

1
2
3
4
5
6
7
8
px.violin(tips,                     # データセット
x="smoker", # X軸に表示するデータ
y="tip", # Y軸に表示するデータ
color="sex", # sex列で色分け
box=True, # 箱ひげ図を重ねて描画
points="all", # すべての要素を点で描画
hover_data=tips.columns # ホバーツールにすべて列の値を表示
).show()

[実行結果]

バイオリン図を表示することができました。

Plotly Express⑪(箱ひげ図)

今回は箱ひげ図を表示します。

データの読み込み

まずはデータを読み込みます。

準備するデータはtipsデータセット(レストランの支払金額とチップの金額)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

tips = px.data.tips()
tips.head()

箱ひげ図

箱ひげ図を表示するためにはbox関数を使います。

引数のxyには、表示するデータの列名を指定します。

[Google Colaboratory]

1
2
3
4
px.box(tips,            # データセット
x="time", # X軸に表示するデータ
y="total_bill" # Y軸に表示するデータ
).show()

[実行結果]

time列(Dinner/Lunch)で分類し、total_bill列(支払金額)をY軸とした箱ひげ図を表示することができました。


box関数引数notchedにTrueを渡すと、中央値の95%信頼区間がノッチ(切り込み)で表現することができます。

また引数pointsに”all”を渡すと、外れ値を含むすべての値を点で描画します。

ホバーツールにはday列を表示してみます。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
px.box(tips,                            # データセット
x="time", # X軸に表示するデータ
y="total_bill", # Y軸に表示するデータ
color="smoker", # smoker列で色分け
notched=True, # ノッチを入れる
points="all", # すべての要素を点で描画
title="Box plot of total bill",
hover_data=["day"] # ホバーツールにday列の値を表示
).show()

[実行結果]

time列(Dinner/Lunch)に加えsmoker列で箱ひげ図が分類されて描画されました。

また各箱ひげ図の左となりに、個々のデータが点で表示されており直感的にデータの散らばり具合を確認することができるようになりました。