みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

「pandas&Plotly 2D/3Dデータビジュアライゼーション実装ハンドブック」の紹介

時々趣味や仕事でデータ分析を行うことがあり, これまでデータの可視化にはmatplotlibやseabornを主に使ってきた.
最近, Notebookでインタラクティブな表示を行うことが必要となり, Plotlyというライブラリでできることを知った.
Plotlyについてはグラフ描画ライブラリの一種ってことぐらいで, インタラクティブな表示が可能なことを知らなかったし, これまではmatplotlibやseabornで特に困ることもなく, 試すこともなかった.
そこで, 昨年('24/7)発売された「pandas&Plotly 2D/3Dビジュアライゼーション実装ハンドブック」を購入し, Plotlyの基本的な使い方を学ぶことにした.



  目 次

序章 データ可視化とインタラクティブなグラフ
第1章 表形式データの基本
第2章 表の変形と結合・分割
第3章 表形式データの値の操作
第4章 例外値への対応
第5章 グラフ作成の基本
第6章 グラフの書式設定
第7章 インタラクティブなグラフの作成
第8章 変数内の値を比較するグラフ
第9章 変数間の関係を表現するグラフ
第10章 変数の分布を表現するグラフ
第11章 変数の傾向や構成を表現するグラフ
第12章 空間を表現するグラフ
第13章 時間を表現するグラフ


ChatGPTでPlotlyの特徴をmatplotlibやseabornと比較してもらうと, Plotly の主な利点は「インタラクティブ性」と「Web対応の美しいビジュアル」だそうで, 以下のような表にまとめてくれた.

項目 Plotly Seaborn Matplotlib
インタラクティブ △(一部可能)
デザイン
Web対応 △ (要工夫)
学習コスト ○(直感的) △(やや冗長
カスタマイズ性
アニメーションや地図 △(外部ライブラリが必要)


今回はPandas部分(第1章から第4章)はさらりと, Plotly部分はGoogle Colabで写経しながら読み進めた.
コードについては各種ライブラリの指定などがあったのだが, 今回はGoogle Colab('25/3)の開発環境をそのまま使い, ほとんどは問題がなかった.
ただ, Google Colabで困った点は, 7.3や13.2でFigureWidgetやコールバック関数を使用する例があるのだが, FigureWidgetがGoogle Colabではどうも正常に動作しないようである.
少し調べてみたが, ネット上の記事でも同様の指摘が見られる.

Google Colab内でWidget表示をする際に,

  :
widget.update_layout(layout)

widget

を, 以下のようにすることで一部動くようになったものもあったが, 基本的には動作しないと思った方がよい.

  :
widget.update_layout(layout)

display(widget)

もし, この辺りもちゃんと試してみたい方は, Google ColabではなくJupyter Notebookの環境を作って試すことをお勧めする.

あと, プログラミングの本では, 最初はコードの全てが載っているが, 徐々にポイント部分のみとなり, 試そうとするとサンプルコード含めて見る必要がある場合が多い.
しかし, この本では全てのコード及び実行結果が載っており, サンプルコードを参照することなく写経や動作確認ができる点はよかった.


これまで, 主に静的なデータ表示しかしなかったので, matplotlibやseabornを使ってきたが, Plotlyで動的なデータ表示も割と容易にできることが分かったので, 今後は活用シーンに合わせてうまく両方を使っていきたいと思う.

---