Plotly Express⑩(エラーバー)

エラーバーは誤差の範囲を図形(線分や交差した線など)で表示します。

棒グラフや折れ線グラフなどと併用して用いられます。

エラーバー

エラーバーを表示するには、グラフを描画する関数の引数error_xX値のエラー値、引数error_yY値のエラー値を設定します。

今回は、散布図にエラーバーを加えたグラフを表示します。

データはnumpy randomクラスのrandn関数を使って、-2~2までの100個の乱数を作成しています。

各エラー値も乱数を設定しています。(0.0~0.1の範囲で100個)

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
12
13
import plotly.express as px
import numpy as np
import pandas as pd

np.random.seed(1)
df = pd.DataFrame(np.random.randn(100, 2), columns=["x", "y"])

px.scatter(df, # データセット
x="x", # X軸に表示するデータ
y="y", # Y軸に表示するデータ
error_x=np.random.rand(100) * 0.1, # X値のエラー値
error_y=np.random.rand(100) * 0.1, # Y値のエラー値
).show()

[実行結果]

散布図の各データにエラーバーを追加したグラフを表示することができました。

Plotly Express⑨(面グラフ)

今回は面グラフを表示します。

データの読み込み

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

準備するデータはgapminderデータセット(年・国ごとの平均寿命と一人当たりのGDP)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

gapminder = px.data.gapminder()
gapminder.head()

面グラフ

面グラフを描画するためにはarea関数を使用します。

各パラメータの設定値に関しては、コメントをご参照下さい。

[Google Colaboratory]

1
2
3
4
5
6
px.area(gapminder,              # データセット
x="year", # X軸に表示する列
y="pop", # Y軸に表示する列
color="continent", # continent(大陸)列で積み上げた面グラフを描画
line_group="country" # country(国)列ごとに境界線を描画
).show()

[実行結果]

面グラフを表示することができました。

Plotly Express⑧(積み上げ棒グラフ)

今回は積み上げ棒グラフを表示します。

データの読み込み

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

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

[Google Colaboratory]

1
2
3
4
import plotly.express as px

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

積み上げ棒グラフ

bar関数のcolorオプションに離散値である列名を指定すると、データを分割した積み上げ棒グラフを表示することができます。

各パラメータの設定値に関しては、コメントをご参照下さい。

[Google Colaboratory]

1
2
3
4
5
px.bar(tips,            # データセット
x="sex", # X軸に表示する列
y="total_bill", # Y軸に表示する列
color="time" # time列で分割して積み上げ
).show()

[実行結果]

また、bar関数のbarmodeオプション“group”指定すると、colorオプションで指定した列(smoker)でグループ化された棒グラフを表示することができます。

[Google Colaboratory]

1
2
3
4
5
6
px.bar(tips,            # データセット
x="sex", # X軸に表示する列
y="total_bill", # Y軸に表示するれつ
color="smoker", # smoker列で分割して
barmode="group" # グループ化
).show()

[実行結果]

Plotly Express⑦(棒グラフ)

今回は棒グラフを表示します。

データの読み込み

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

準備するデータはgapminderデータセット(年・国ごとの平均寿命と一人当たりのGDP)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

gapminder_Canada = px.data.gapminder().loc[gapminder["country"] == "Canada"]
gapminder_Canada.head()

棒グラフ

棒グラフを表示するためにはbar関数を使用します。

各パラメータの設定値に関しては、コメントをご参照下さい。

[Google Colaboratory]

1
2
3
4
5
6
px.bar(gapminder_Canada,        # データセット
x="year", # X軸に表示するデータ
y="pop", # Y軸に表示するデータ
color="lifeExp", # 値をカラースケールで表現
hover_data=["lifeExp", "gdpPercap"], # ホバーツールに表示
).show()

[実行結果]

棒グラフを表示することができました。

Plotly Express⑥(散布図行列)

今回は散布図行列を表示します。

データの読み込み

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

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

[Google Colaboratory]

1
2
3
4
import plotly.express as px

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

散布図行列

散布図行列を表示するためにはscatter_matrix関数を使用します。

各パラメータの設定値に関しては、コメントをご参照下さい。

[Google Colaboratory]

1
2
3
4
5
scatter_matrix_fig = px.scatter_matrix(tips,             # データセット
dimensions=["total_bill", "tip", "size"], # 描画対象の列名
color="time", # time列で色分け
symbol="smoker", # smoker列ごとにマーカの形状で分類
).show()

[実行結果]

散布図行列を表示することができました。

Plotly Express⑤(散布図)

今回は散布図を表示します。

データ読み込み

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

読み込むデータはgapminderデータセット(年・国ごとの平均寿命と一人当たりのGDP)です。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

gapminder = px.data.gapminder()
gapminder.head()

[実行結果]

散布図

散布図を表示するためにはscatter関数を使用します。

各パラメータの設定値に関しては、コメントをご参照下さい。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
gapminder_2007 = gapminder.loc[gapminder["year"] == 2007]
px.scatter(
gapminder_2007,
x="gdpPercap", # 一人当たりのGDP
y="lifeExp", # 平均寿命
size="pop", # 要素の大きさ
color="continent", # 要素の色
hover_name="country", # ホバーツールのタイトル
log_x=True, # X軸を対数にとる
size_max=60, # 要素の大きさの最大値
).show()

[実行結果]

散布図を表示することができました。

(要素の大きさを指定しているのでバブルチャートということもできます)

Plotly Express④(ラインチャート)

今回はPlotly Expressを使って折れ線グラフを表示します。

ラインチャート

ラインチャートを表示するためにはline関数を使用します。

[Google Colaboratory]

1
2
3
4
5
import pandas as pd
import plotly.express as px

df = pd.DataFrame([[1, 1], [2, 5], [3, 4], [4, 8], [5, 2]], columns=["x", "y"])
px.line(df, x="x", y="y").show()

2次元のリストデータを作成し、それをデータフレームに変換し、line関数の第一引数に設定します。

[実行結果]

ラインチャート(折れ線グラフ)を表示することができました。

Plotly Express③(バブルチャート)

前回記事に引き続きバブルチャートを表示します。

バブルチャート(大陸ごと)

ファセットを利用すると、データをカテゴリごとに分割して可視化することができます。

facet_col“continent”を指定し、大陸ごとに別のグラフで描画します。(10行目)

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
facet_fig = px.scatter(
gapminder,
x="gdpPercap",
y="lifeExp",
log_x=True,
hover_name="country",
size="pop",
size_max=40,
color="continent",
facet_col="continent", # 大陸ごとのグラフに分割
width=1200 # グラフの横幅
)
facet_fig.update_xaxes(tickfont={"size": 8}) # X軸ラベルのフォントサイズ
facet_fig.show()

[実行結果]

バブルチャート(年ごと)

データセットには年のデータ含まれています。(これまではすべての年のデータをまとめて描画していました。)

アニメーション機能を使って年ごとのバブルチャートを描画します。(12行目)

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
animation_fig = px.scatter(
gapminder,
x="gdpPercap",
y="lifeExp",
log_x=True,
hover_name="country",
size="pop",
size_max=40,
color="continent",
facet_col="continent",
width=1200,
animation_frame="year", # 年ごとのデータでアニメーション
)
animation_fig.update_xaxes(tickfont={"size": 8})
animation_fig.show()

[実行結果]

グラフの下に再生ボタンスライダーが表示され、年ごとにバブルチャートを切り替えることができます。

スライダを操作すると、指定した年のデータ描画されます。

まとめ

最初の散布図では以下の2つの情報しか表現できませんでした。

  • 一人あたりのGDP
  • 平均寿命

Plotly Expressでインタラクティブな可視化を行うことにより、次のような情報も合わせて確認できるようになりました。

  • 国名
    ホバーツールで表示。
  • 人口
    バブルの大きさで表示。
  • 大陸名
    バブルの色またはグラフの分割で表示。

  • アニメーションまたはスライドで表示切替。

Plotly Express②(バブルチャート)

前回記事から引き続き、gapminderデータセットを使います。

バブルチャート

人口の情報を散布図に加え、点の大きさで表現したバブルチャートを描画します。

また大陸(continent列)ごとに要素を色分けします。

[Google Colaboratory]

1
2
3
4
5
6
7
8
9
10
11
px.scatter(
gapminder,
x="gdpPercap",
y="lifeExp",
log_x=True,
hover_name="country",
size="pop", # 人口を点の大きさで表現
size_max=40, # 点の大きさの最大値
color="continent", # 大陸ごとに色分け
width=800 # グラフの横幅
).show()

[実行結果]

より多くの情報を得られるようになりました。

凡例(グラフ右上に表示)をクリックすると大陸ごとに表示・非表示を切り替えることができます。

ヨーロッパとアメリカのみを表示すると次のようなグラフになります。

[実行結果]

特定の要素にカーソルを合わせると、ホバーツールが表示され座標の情報に加え、国名・大陸名・人口の情報を確認することができます。

Plotly Express①(インタラクティブなグラフ)

Plotly Express

Ploty Expressはplotly.pyのラッパーで、簡潔なコードでデータを可視化できます。

Ploty Expressは以下のような機能をもち、多次元のデータを高い表現力で可視化できます。

  • 複数種類のグラフを組み合わせた可視化
  • ファセットによる可視化
    データを分割して複数のグラフに可視化
  • アニメーションによる可視化
    データを分割してフレームに描画して可視化

データの読み込み

gapminderデータセットを読み込みます。

[Google Colaboratory]

1
2
3
4
import plotly.express as px

gapminder = px.data.gapminder()
gapminder.head()

[実行結果]

では一人当たりのGDP(gdpPercap列)平均寿命(lifeExp列)を可視化していきます。

pandasでの可視化

まずpandasplotメソッドを使って可視化を行います。

logxオプションにTrueを指定し、X軸は対数で表示しています。

[Google Colaboratory]

1
2
%matplotlib inline
gapminder.plot.scatter(x="gdpPercap", y="lifeExp", logx=True, xlim=[100, 1e6])

[実行結果]

上記の散布図では一人あたりGDP平均寿命の関係は分かるものの、具体的な値は座標から読み取るしかありません。

また国名(country列)人口(pop列)など、ほかの列の情報はこのグラフから読み取ることはできません。

Express Plotlyでの可視化

Plotly Expressを使って可視化を行います。

[Google Colaboratory]

1
2
3
4
5
6
7
8
px.scatter(
gapminder,
x="gdpPercap",
y="lifeExp",
log_x=True,
hover_name="country",
width=800 # グラフの横幅
).show()

[実行結果]

上図はpandasで作成したグラフと同じグラフのように見えますが、特定の要素にカーソルを合わせると、下記の図のようにホバーツールが表示されます。

[実行結果]

ホバーツールからは要素の値が確認でき、各座標の情報に加えて国名も見て取ることができます。