Chapter 12

plotlyで散布図

mimitako
mimitako
2022.10.29に更新

まずは散布図から

章の冒頭で述べたとおり、zenn の中では plotly のインタラクティブな感じが出せません。したがって、実際に動く状態をこちら(https://colab.research.google.com/drive/1RNtGqug9fVRT4uSBUBLglNpvkwVfI1ok?usp=sharing)にアップロードしていますので、そちらでご確認ください。

グラフを作成するときに、最初にやってみるのが散布図だと思います。いつものごとく iris のデータセットを用いてグラフを作成していきます。

今回はデータの編集がほぼありませんので、インポートするライブラリはこれだけです。

import plotly.express as px
import seaborn as sns

続いてデータセットの読み込みです。

iris_data = sns.load_dataset("iris")

作っていて気づいたのですが、pandas がインポートされていなくても動くんです。dataset は DataFrame なので必要だと思っていましたが、そうでもなかったですね。

散布図の作成

早速散布図を作成します。

fig = px.scatter(iris_data, x = "sepal_length", y = "petal_length" )
fig

書くのはこれだけです。引数の 1 つ目に DataFrame、x,y を次に指定するだけで描画できます。seaborn なんかよりも遥かに楽でしょう。

出力されるグラフはこんな感じです。

このページで実際に触ることができれば良いのですが、残念です。

color(hue)を設定する

seaborn の hue にあたるパラメータが color となります。今回は species を指定しましょう。

fig = px.scatter(iris_data, x = "sepal_length", y = "petal_length" , color= "species" )
fig

バブルチャート(3D)もすぐにできる

散布図の応用で、点のサイズを特定の条件に応じて変化させることができます。

fig = px.scatter(iris_data, x = "sepal_length", y = "petal_length" , color= "species", size = "petal_width" )
fig

color(hue)を量的データにする

通常 hue で設定できるデータは A,B などの質的データとなりますが、plotly では量的なデータも設定できます。その場合はその重みに応じて色が連続的に変化します。

fig = px.scatter(iris_data, x = "sepal_length", y = "petal_length" , color= "petal_width", size = "petal_width" )
fig

プロットの点の形状を変更する

プロットの点を変更することもできます。マーカーの凡例の位置が color と重複するため片方を別の位置に移動しました。

fig = px.scatter(iris_data, x = "sepal_length", y = "petal_length" , color= "petal_width", size = "petal_width", symbol= "species" )
fig.update_layout(legend=dict(x=0.01, y=0.99, xanchor='left', yanchor='top', orientation='h', ))
fig

plotly の散布図まとめ

描写するのは簡単です。なんなら、seaborn よりも簡単にできます。今回は colab で紹介をしましたが、html を生成できるため、wordpress などにも埋め込めます。

正直、WEB 関連だと無限の可能性を秘めているのかなと思っています。欠点という欠点は思いつきませんが、技術データで利用するときは細かい調整をやりづらそうなので、難があるかもしれません。