Python PR

【Python】Bokehでインタラクティブなデータ可視化 -ソースコードあり-

Bokehでデータ可視化
記事内に商品プロモーションを含む場合があります

こんにちは。

現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。

今回はBokehによるインタラクティブなデータ可視化について紹介します。

Bokehを使うモチベーション

データ分析するとき、可視化して”データをしっかり観察”することが重要です。

Pythonには matplotlib , seaborn などの優秀な可視化ライブラリがあります。ただ、以下のようなインタラクティブな可視化をしたいときもあります。

Bokeh , Plotlyを使えば、上図のようなグラフ描画+マウス操作を実現できます。Bokehの方が比較的簡単だと思うので、本記事でBokehの基本的な使い方を紹介します。

実践!Bokehでインタラクティブなグラフ描画 -基礎編-

データ分析するとき、Jupyter Notebookを使う機会が多いので、今回はGoogle ColabでBokehによるインタラクティブなグラフ描画を実践します。

インストールとバージョン確認

最初に公式サイトに従いBokehをインストールします。Google Colabを使う場合は、インストール済みなので、何もしなくてOKです。

以下のコマンドでバージョン確認できます。

IPython – 5.5.0
Pandas – 1.0.4
Bokeh – 1.4.0

上記のバージョンで動作確認しました。

Importと出力設定

まずはImportと出力設定から

Google Colab(Jupyter Notebook)を使う場合、reset_output()ではなくoutput_notebook()を使います。

Bokehで散布図を描画

以下がBokehによる基本的なグラフ描画のコードです。

Bokehでデータ可視化

デフォルト設定でも良いのですが、上記コードの設定を使い回すことが多いです。

またpythonのリスト, numpy.arrayなどのフォーマット違いを意識せずに、ほぼ同じコードで描画できます。

  • 自分好みの設定を使い回す
  • pythonのリスト, numpy.array, pandas.DataFrameなどのフォーマット違いを吸収して描画できる

散布図と折れ線図を重ねて描画

複数グラフを重ねた描画もできます。例えば、散布図と折れ線図を重ねて描画してみます。

Bokehでデータ可視化

このような短いコードでインタラクティブなデータ可視化を実現できます。

Bokehでマウスオーバー

サクッと マウスオーバー がしたくてBokehを採用することも多いです。

Bokehでデータ可視化

tooltips により、マウスで選択したプロット情報を表示できます。またオリジナルの辞書を定義し、tooltipsに@hoge(この例では@label)を組み込むこともできます。

  • マウスオーバーを簡単に実現できる
  • 表示するプロット情報をカスタムできる
スポンサーリンク

実践!Bokehでインタラクティブなグラフ描画 -応用編-

Bokehの基本的な使い方が分かったので、今度はpandasと連携してインタラクティブなデータ可視化を実践します。

Importと出力設定

まずはImportと出力設定から。基礎編との違いは irisデータセット に関するコードの有無です。

pandas.DataFrameをインタラクティブに可視化❶

基礎編で学んだ通り、pandas.DataFrameでもインタラクティブな可視化ができます。

Bokehでデータ可視化

簡単ですね。

pandas.DataFrameをインタラクティブに可視化❷

マウスオーバーでラベルを表示するより、各プロットを色付けした方が直観的で良い気がします。

Bokehでデータ可視化

pandas.DataFrameをインタラクティブに可視化➌

凡例があるとより親切かも

Bokehの描画したグラフはhtmlファイルで出力できるので、pythonコードの提供や環境構築不要でインタラクティブなグラフを共有できます。

bokeh-iris.html

今回作成したグラフ(bokeh-iris.html)を公開するので、自由に触ってみて下さい(*・ω・)ノ♪

まとめ

インタラクティブなデータ可視化ライブラリ Bokeh の基本的な使い方を紹介しました。

Pythonには matplotlib , seaborn などの優秀な可視化ライブラリがありますが、グラフをマウス操作したときは Bokeh がオススメです。

htmlファイルでインタラクティブなグラフを共有できるのも嬉しいですね(*・ω・)ノ♪

本記事が何かの参考になれば嬉しいです。

はやぶさ
はやぶさ
描画ライブラリなどデータ分析に使えるオススメのライブラリを共有して頂けると嬉しいです。よろしくお願いします。

以下 データ分析に関する良書の紹介

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python