迅速に起動する

Bokehは現代のWebブラウザのためのインタラクティブな可視化ライブラリである.エレガントで簡潔な多機能グラフィックス構造を提供し、大型またはストリーミングデータセット上で高性能なインタラクティブ性を提供する。Bokehは、インタラクティブな描画、ダッシュボード、データアプリケーションを迅速かつ容易に作成したい人を助けることができます。

高度なカスタマイズに必要な簡単さと強力で柔軟な機能を提供するために、Bokehは、2つのインタフェースレベルをユーザに公開した。

bokeh.models

A low-level アプリケーション開発者に最大の柔軟性のあるインタフェースを提供する.

bokeh.plotting

A higher-level 視覚字形を中心としたインタフェースを構成する.

本クイック入門では|boke.ploting|インタフェースを重点的にご紹介します。

取り付ける

Bokehをインストールする方法は様々ありますが、使っても一番簡単なものをお勧めします Anaconda Python distribution BashまたはWindowsコマンドプロンプトに以下のコマンドを入力します。

conda install bokeh

これは,Bokehに必要なすべての依存項を実装する.Anacondaは、すべてのプラットフォームおよび構成(Windowsを含む)上でのインストール作業を最小限に削減し、インストール例をインストールします。 examples/ あなたのニシキヘビやMinicondaはカタログのサブディレクトリをインストールします。

NumPyのようなすべての必要な依存項がインストールされていると確信すれば、変更することができます pip コマンドラインで:

pip install bokeh

注釈

♪the pip メソッドは例を実装しない.Gitリポジトリをクローンし、表示する examples/ リストを検出して例を表示します。

スタート

Bokehは多くの機能を提供する大型ライブラリであるため,本節では一般的なBokeh用例およびワークフローのみを高速に閲覧する.詳細については完全なものをご参照ください ユーザーガイド それがそうです。

いくつかの例から始めましょう

基本Pythonリストのデータを折れ線グラフ(ズーム、並進、保存、および他のツールを含む)として描画することは非常に簡単です。

from bokeh.plotting import figure, output_file, show

# prepare some data
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# output to static HTML file
output_file("lines.html")

# create a new plot with a title and axis labels
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')

# add a line renderer with legend and line thickness
p.line(x, y, legend_label="Temp.", line_width=2)

# show the results
show(p)

このスクリプトを実行すると、新しい出力ファイルが見えます "lines.html" また,ブラウザはそれを表示するために新しいオプションカードを自動的に開く(プレゼンテーションの目的で,本文書では描画出力を直接内蔵している).

|boke.ploting|インタフェースを用いて描画を作成する基本手順は以下のとおりである.

データを準備して

この場合、通常のPythonリストを使用することができますが、NumPy配列やPandasシリーズを使用することもできます。

Bokehがどこで出力を生成するか教えてください

本例では、使用 output_file() ,ファイル名は "lines.html" それがそうです。もう一つの選択肢は output_notebook() 木星ノートに使います。

電話をかける figure()

これは、典型的なデフォルトオプションを有する描画を作成し、タイトル、ツール、および軸ラベルを容易にカスタマイズすることができます。

レンダラの追加

本例では,データとして|Figure.line|を用い,色,図例,幅などの視覚カスタマイズを指定した.

Bokehに行ってください show() あるいは…。 save() その結果

これらの関数は,描画をHTMLファイルとして保存し,ブラウザに表示することを選択することができる.

以下のいくつかの例に示すように、第3のステップおよび第4のステップを繰り返して複数の描画を作成することができる。

より多くのデータ系列,字形,対数軸などを追加することで出力をより多くカスタマイズする必要があれば,|boke.ploting|インタフェースも非常に便利である.以下に示すように、複数の字形を1つの描画に容易に組み合わせることができる。

from bokeh.plotting import figure, output_file, show

# prepare some data
x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y0 = [i**2 for i in x]
y1 = [10**i for i in x]
y2 = [10**(i**2) for i in x]

# output to static HTML file
output_file("log_lines.html")

# create a new plot
p = figure(
   tools="pan,box_zoom,reset,save",
   y_axis_type="log", y_range=[0.001, 10**11], title="log axis example",
   x_axis_label='sections', y_axis_label='particles'
)

# add some renderers
p.line(x, x, legend_label="y=x")
p.circle(x, x, legend_label="y=x", fill_color="white", size=8)
p.line(x, y0, legend_label="y=x^2", line_width=3)
p.line(x, y1, legend_label="y=10^x", line_color="red")
p.circle(x, y1, legend_label="y=10^x", fill_color="red", line_color="red", size=6)
p.line(x, y2, legend_label="y=10^x^2", line_color="orange", line_dash="4 4")

# show the results
show(p)

Jupyterノートパソコン

このような点で、私たちはJupyterノートを言及しなければならない。

Jupyterノートは探索的データ分析の常用ツールであり,PyDataコミュニティで広く用いられている.BokehはJupyterノートとシームレスに統合されています。上記の例をノートに表示するには、変更するだけです output_file() 至る output_notebook() 代わりに。

あなたは直接 live tutorial notebooks MyBinderがオンラインで管理しています。これらのファイルの静的バージョンは Bokeh NBViewer Gallery それがそうです。

♪the Bokeh GitHub repository ノートの例もたくさんあります examples/howto カタログです。リポジトリをクローンした後、リポジトリにナビゲートして実行します:

jupyter notebook

自動的に開いたインデックスページに表示されている任意のノートを開いて対話することができます。特に、これらの例を見ることができ、BokehとJupyterの相互作用ウィジェットを一緒に使用する方法を示しています:

examples/howto/notebook_comms/Jupyter Interactors.ipynb

これは,Bokehのインタラクション機能とJupyterのプルダウンメニューとスライダを組み合わせた基本例である.

examples/howto/notebook_comms/Numba Image Example.ipynb

より高度な例では、Numbaを使用してJupyterウィジェットコントロールに基づいて画像処理を効率的に交互に実行する。

注釈

Bokeh描画はGitHubノートプレビューに内部接続されて表示されません それがそうです。Bokeh描画はJavaScriptコードを用いてレンダリングされるが,GitHubはプレビュー内容中のすべてのJavaScriptを消去する.

サンプルデータ

Bokehソースコードに含まれるいくつかの例は、個別に配布されたサンプルデータファイルを使用する。このデータをダウンロードするには、BashまたはWindowsコマンドプロンプトで以下のコマンドを実行してください。

bokeh sampledata

詳細は|boke.sampledata|参照。

概念

上記のエピソードを考慮し、それらを使用していくつかのコア概念の定義を支援しましょう。

密謀する.

Bokehでは、ストーリーは中心的な概念である。これらは,すべての様々なオブジェクト(レンダラ,補助線,データ,ツール)を格納するコンテナであり,これらのオブジェクトは,ユーザに提示する最終的な可視化効果を構成している.Bokeh.ploting|インタフェースを提供しています figure() 関数は必要なすべてのオブジェクトを組み立てるのを助ける。

象形文字

字形はBokehが表示可能な基本視覚マーカである.最低レベルでは 字形オブジェクト. 例えば、 Line それがそうです。低レベル|boke.model|インタフェースを使用している場合、フォントオブジェクトおよびそのデータソースを含むすべての異なるBokehオブジェクトを作成して調整する責任があります。便宜上|bokeh.ploting|インタフェースはより上位のものを公開している 字形術 例えば、第1例で用いた|Figure.line|方法。第2の例はまた、同じ描画上に円形およびラインインジケータを一緒に表示するために|Figure.Circle|の呼び出しを追加する。Bokehは線や円のほかにも多くの追加をしています glyphs そして markers 使えます。

The visual appearance of a glyph is tied directly to the data values that are associated with the glyph's various attributes. In the example above we see that positional attributes like x and y can be set to vectors of data. But glyphs also have some combination of 線属性, 充填属性, and パターン充填特性 to control their appearance. All of these attributes can be set with "vectorized" values as well. We will show examples of this below.

案内と注釈

Bokehマップはまた、提示を支援するために、またはユーザの比較を支援するための他の視覚的コンポーネントを有することができる。これらは2つに分類できる. ガイドレール. 距離、角度などのユーザの判断を支援する可視化支援ツールであり、格子線またはベルト、軸(例えば、線形、対数または日時)を含み、目盛りおよび目盛りラベルを有する可能性もある。 注釈をつける. マークや名前を印刷する部分の視覚支援ツールである.その中にはタイトル、伝説などが含まれている。

範囲

範囲は描画のデータ空間境界を記述している.デフォルトの場合,|boke.ploting|インタフェースを用いて生成される描画構成は DataRange1d すべての利用可能なデータのオブジェクトを含むように印刷境界を自動的に設定しようと試みます。しかし明確なものを提供することができます Range1d 対象の固定境界。便宜上、これらのコンテンツは、一般に、2タプルまたはリストとしてスペルされてもよい。

p = figure(x_range=[0,10], y_range=(10, 20))

資源

描画を生成するためには,クライアントライブラリBoehJS JavaScriptとCSSコードをブラウザにロードする必要がある.デフォルトの場合、 output_file() 関数は以下の位置からBoehJSをロードする cdn.bokeh.org それがそうです。しかし、Bokehは、パラメータを渡すことによって、BokehJSリソースに直接埋め込まれた静的HTMLファイルを生成するように構成されてもよい。 mode="inline" 致す output_file() 機能します。

もっと多くの例があります

以下には,|boke.ploting|インタフェースの他の一般的なタスクや用例を示す例がいくつかある.

ベクトル化された色と大きさ

この例は、以下に示すように、フォント属性にデータ値シーケンスをどのように提供するかを示している fill_color そして radius それがそうです。この例で注意すべき他の事項:

  • 明確なツール名リストを提供する figure()

  • CDNからBokehJSリソースを取得する mode 論弁.

  • 設ける x_range そして y_range 明示的に

  • 線を1本ひっくり返す off (その値を None

  • NumPy配列を使用したデータの提供

import numpy as np

from bokeh.plotting import figure, output_file, show

# prepare some data
N = 4000
x = np.random.random(size=N) * 100
y = np.random.random(size=N) * 100
radii = np.random.random(size=N) * 1.5
colors = [
    "#%02x%02x%02x" % (int(r), int(g), 150) for r, g in zip(50+2*x, 30+2*y)
]

# output to static HTML file (with CDN resources)
output_file("color_scatter.html", title="color_scatter.py example", mode="cdn")

TOOLS = "crosshair,pan,wheel_zoom,box_zoom,reset,box_select,lasso_select"

# create a new plot with the tools above, and explicit ranges
p = figure(tools=TOOLS, x_range=(0, 100), y_range=(0, 100))

# add a circle renderer with vectorized colors and sizes
p.circle(x, y, radius=radii, fill_color=colors, fill_alpha=0.6, line_color=None)

# show the results
show(p)

連動した並進とブラシスクリーン

異なる描画の様々な側面をリンクすることは,データ可視化に有用な技術である可能性がある.Bokehでは,このようなつながりは通常以下のように実現される. 共有 区画間のいくつかのブロック構成要素。次は例を示しています 平行移動をリンクする. (1つの描画の範囲を変更すると他の描画更新が生じる),方法は,描画間で範囲オブジェクトを共有することである.本例では他にも注意が必要である.

  • ほえる. figure() 複数のブロックを複数作成する

  • Vbl.使用 gridplot() 複数のブロックを配列するステップ

  • 新しい字形方法を用いて新しい字形を表示する|Figure.三角形|和|Figure.square|

  • 隠れツールバーを設定することで toolbar_location 至る None

  • 便利性パラメータを設定する color (同時設定 line_color そして fill_color )と alpha (同時設定 line_alpha そして fill_alpha

import numpy as np

from bokeh.layouts import gridplot
from bokeh.plotting import figure, output_file, show

# prepare some data
N = 100
x = np.linspace(0, 4*np.pi, N)
y0 = np.sin(x)
y1 = np.cos(x)
y2 = np.sin(x) + np.cos(x)

# output to static HTML file
output_file("linked_panning.html")

# create a new plot
s1 = figure(width=250, plot_height=250, title=None)
s1.circle(x, y0, size=10, color="navy", alpha=0.5)

# NEW: create a new plot and share both ranges
s2 = figure(width=250, height=250, x_range=s1.x_range, y_range=s1.y_range, title=None)
s2.triangle(x, y1, size=10, color="firebrick", alpha=0.5)

# NEW: create a new plot and share only one range
s3 = figure(width=250, height=250, x_range=s1.x_range, title=None)
s3.square(x, y2, size=10, color="olive", alpha=0.5)

# NEW: put the subplots in a gridplot
p = gridplot([[s1, s2, s3]], toolbar_location=None)

# show the results
show(p)

ツールバーは隠れ状態にあるにもかかわらず、並進ツールは依然として存在し、アクティブ状態にある。上の描画をクリックしてドラッグして平行移動させ、それらの範囲がどのようにリンクされているかを確認します。

もう1つの常に有用なリンクは 連動ブラシシート. (1つの描画上の選択は、他の描画上の選択更新を招く)。以下の例は共有による ColumnDataSource 2つのブロックの間には

import numpy as np
from bokeh.plotting import *
from bokeh.models import ColumnDataSource

# prepare some date
N = 300
x = np.linspace(0, 4*np.pi, N)
y0 = np.sin(x)
y1 = np.cos(x)

# output to static HTML file
output_file("linked_brushing.html")

# NEW: create a column data source for the plots to share
source = ColumnDataSource(data=dict(x=x, y0=y0, y1=y1))

TOOLS = "pan,wheel_zoom,box_zoom,reset,save,box_select,lasso_select"

# create a new plot and add a renderer
left = figure(tools=TOOLS, width=350, height=350, title=None)
left.circle('x', 'y0', source=source)

# create another new plot and add a renderer
right = figure(tools=TOOLS, width=350, height=350, title=None)
right.circle('x', 'y1', source=source)

# put the subplots in a gridplot
p = gridplot([[left, right]])

# show the results
show(p)

直方体またはワイヤ選択ツールを選択し、クリックしてドラッグして1つの描画上で選択し、別の描画上の選択を更新します。

日付時間軸

日付と時系列を処理することは別の一般的なタスクである。ポークには老練な DatetimeAxis これは印刷された現在の割合に応じて表示される記号を変更することができる。ある入力に対して,Bokehは自動的にデフォルトで考える. DatetimeAxis しかし、あなたは常に値を渡すことで明示的に要求することができます。 "datetime" 致す x_axis_type あるいは…。 y_axis_type 設定するパラメータ figure() それがそうです。この例では面白いことに注意する必要があります

  • 設ける plot_width そして plot_height 以下の内容の論証 figure()

  • ブロックと他のオブジェクトの属性に代入することでブロックと他のオブジェクトを定義する.

  • accessing guides and annotations with convenience Figure attributes: legend, grid, xgrid, ygrid, axis, xaxis, yaxis

import numpy as np

from bokeh.plotting import figure, output_file, show
from bokeh.sampledata.stocks import AAPL

# prepare some data
aapl = np.array(AAPL['adj_close'])
aapl_dates = np.array(AAPL['date'], dtype=np.datetime64)

window_size = 30
window = np.ones(window_size)/float(window_size)
aapl_avg = np.convolve(aapl, window, 'same')

# output to static HTML file
output_file("stocks.html", title="stocks.py example")

# create a new plot with a datetime axis type
p = figure(plot_width=800, plot_height=350, x_axis_type="datetime")

# add renderers
p.circle(aapl_dates, aapl, size=4, color='darkgrey', alpha=0.2, legend_label='close')
p.line(aapl_dates, aapl_avg, color='navy', legend_label='avg')

# NEW: customize by setting attributes
p.title.text = "AAPL One-Month Average"
p.legend.location = "top_left"
p.grid.grid_line_alpha = 0
p.xaxis.axis_label = 'Date'
p.yaxis.axis_label = 'Price'
p.ygrid.band_fill_color = "olive"
p.ygrid.band_fill_alpha = 0.1

# show the results
show(p)

Bokehアプリケーション

Bokehには、オプションのサーバコンポーネントBokeh Serverも付属しています。上で見たように,Bokehサーバを用いることなく多くの興味深いインタラクティブな可視化効果を作成することができる.しかし、Bokehサーバは、以下のような斬新で強力な機能を提供している。

  • 計算や描画更新を駆動するユーザインタフェース小部品と描画選択.

  • 大規模データセットのスマートサーバ側でダウンサンプリングする.

  • ストリーミングデータは自動的に描画を更新する.

  • 複雑なフォント書き換えと“ビッグデータ”変換。

  • より幅広い視聴者向けのストーリーとダッシュボードが発表されています。

Bookehサーバが使用する詳細な情報は、QuickStartによって許可されているよりも大きな空間が必要ですが、以下では簡単なBokehサーバアプリケーションを見ることができます。

ホスト·Bokehアプリケーションの詳細については、参照されたい サーバアプリケーション例 部分 画廊. それがそうです。サーバの使用方法およびBokehサーバ描画やアプリケーションの作成に関する情報は、参照されたい Bokehサーバの実行 部分 ユーザーガイド それがそうです。

次は何ですか。

このクイック入門はBokeh能力の毛皮にしか触れていない。

Bokehが提供する異なる描画API、Bokehサーバの使用、およびあなた自身のアプリケーションおよび文書にBokeh描画を埋め込む方法については、参照してください。 ユーザーガイド それがそうです。すべてのモジュール、クラス、モデル、オブジェクトの詳細については、ご参照ください 参考にする それがそうです。Bokehの構築·開発方法を学ぶことに興味がある場合、または新しい言語バインディングを作成する方法についての情報を参照してください。 開発者. ガイドです。

Bokehをご自身のデータと一緒に使用する既製の例を確認するには、ご確認ください 画廊. それがそうです。詳細な例や演習を見て、実践を通してBokehを学習する練習を探すには、通過してください live tutorial notebooks それがそうです。

ご質問や技術的なご支援がございましたら、ご参加ください Bokeh Discourse それがそうです。

訪問 Bokeh GitHub repository これらの例を試してみましょう

ツイッターで私たちに注目してください @bokeh よし!