Python
 Computer >> コンピューター >  >> プログラミング >> Python

Bokehを使ってPythonでポイントにカーソルを合わせるとデータが表示されるカラースキャッタープロットを作成する方法

Bokehはデータ可視化を支援するPythonパッケージで、オープンソースプロジェクトとして公開されています。BokehはHTMLとJavaScriptを使ってプロットを描画するため、Webベースのダッシュボードを構築する際に特に有用です。

BokehはNumPyやPandasなど他のPythonパッケージと簡単に組み合わせて利用でき、インタラクティブなプロットやダッシュボードの作成に活用できます。

Bokehの特徴

MatplotlibやSeabornが静的なグラフを生成するのに対し、Bokehはインタラクティブなグラフを生成します。ユーザーがグラフに対して操作(ズーム、パン、ホバーなど)を行うと、それに応じて表示が変化します。また、作成したプロットはFlaskやDjangoで構築したWebアプリケーションに埋め込むことができ、Jupyter Notebook上でレンダリングすることも可能です。

Bokehの依存パッケージ

numpy
Pillow
Jinja2
Packaging
Pyyaml
Six
Tornado
python-dateutil

インストール方法

Windowsのコマンドプロンプトの場合

pip3 install bokeh

Anacondaプロンプトの場合

conda install bokeh

実装例:ホバー機能付きカラースキャッタープロット

以下は、ポイントにカーソルを合わせると情報が表示される「hover」ツールを含むツールバーを設定し、ランダムに生成した5000個の点を色付きの散布図として描画する例です。

import numpy as np
from bokeh.plotting import figure, output_file, show

N = 5000
x = np.random.random(size=N) * 125
y = np.random.random(size=N) * 125
radii = np.random.random(size=N) * 1.35
colors = [
"#%02x%02x%02x" % (int(r), int(g), 150) for r, g in zip(40+2*x, 30+2*y)
]

TOOLS="hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,tap,save,box_select,poly_select,lasso_select,"
p = figure(tools=TOOLS)

p.scatter(x, y, radius=radii,
fill_color=colors, fill_alpha=0.6,
line_color=None)

output_file("colorscatter.html", title="Color scatter plot")
show(p)

このコードを実行すると、「colorscatter.html」というHTMLファイルが生成され、ブラウザ上でインタラクティブなカラースキャッタープロットが表示されます。hoverツールが有効になっているため、各ポイントにマウスカーソルを合わせるとその座標値などのデータがツールチップとして表示されます。

コードの解説

  • 必要なパッケージをインポートし、エイリアスを付けています。
  • NumPyの「random」関数を使用して、x座標・y座標・半径のデータをランダムに生成しています。
  • figure関数を呼び出して図を作成し、TOOLS引数にhoverを含む複数のインタラクティブツールを指定しています。
  • 「output_file」関数を呼び出して、生成されるHTMLファイルの名前とタイトルを指定しています。
  • 散布図の各データポイントに色を割り当てるため、x・yの値に基づいてHEX形式のカラーコードをリストとして定義しています。
  • Bokehの「scatter」関数にデータ、半径、塗りつぶし色、透明度を渡して散布図を描画しています。
  • 「show」関数を使用して、生成されたプロットをブラウザで表示しています。
  1. PythonのSeabornでstripplotを使うときにポイントの重なりを防ぐ方法(jitterパラメータの使い方)

    データの可視化は、複雑な計算を行ったり数値を一つずつ確認したりしなくても、データの中で何が起きているのかを直感的に把握できるようにしてくれる重要なステップです。その可視化を支援するライブラリのひとつが「Seaborn」です。Seabornはカスタマイズされたテーマと高水準なインターフェースを備えており、美しいグラフを簡単に描画できます。しかし、扱う変数がカテゴリカル(分類型)データである場合、一般的な散布図やヒストグラムなどはそのまま使えません。こうしたケースでは、カテゴリカル散布図(categorical scatterplot)を使用する必要があります。stripplotとはカテゴリカル変

  2. PythonとSeabornを使って散布図を表示する方法をわかりやすく解説

    データ分析において可視化(ビジュアライゼーション)は非常に重要なステップです。数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データに何が起きているのかを直感的に把握できるからです。その可視化を手軽に実現できるライブラリの一つが、Pythonの「Seaborn」です。 散布図(scatter plot)とは、データポイントをグラフ上に点として散りばめて分布を表現するグラフのことです。数値データの値をドットで表し、横軸・縦軸上の各ドットの位置が、それぞれのデータポイントの値を示します。散布図を使うことで、2つの変数間の関係性(相関)を視覚的に理解することができます。 ここでは、Sea