ブラウザにインタラクティブな描画およびアプリケーションを作成するために、Bokehには、ブラウザにおいて描画およびレンダリングおよびイベント処理のすべての作業を完了するためのクライアントライブラリBokehJSがある。Bokeh Pythonライブラリ(およびR,ScalaやJuliaなどの他の言語のライブラリ)は,JavaScriptやWeb開発を明示的に心配することなく,高レベルでBokehJSと容易にインタラクションする方法である.
しかし,BokehJSは独自のAPIを持ち,BokehJSを直接用いて純JavaScript開発を行うことができる.また、 Bokehを伸ばす カスタムモデルに対しては,通常,BokehJSと直接インタラクションする必要がある.
警告
BokehJS APIはまだ実験的とされており、将来のバージョンで変更される可能性があります。
BokehJSはCDNと npm それがそうです。ご参照ください BokehJS 部分 取り付ける ページはより詳細な情報を取得するために使用される。
npm
描画やアプリケーション(例えば、ウィザード、字形、ウィジェットなど)を構築するための低レベルなモデル通常Bokeh Pythonモデルと完全に一致していますだから、 参考にする Pythonの観点から提示されているにもかかわらず、BoehJSモデルに関する質問に答える主な資源です。
Pythonライブラリの階層組織とは異なり、すべてのJavaScriptモデルは1つのプレーンにあります Bokeh モジュールです。通常はどんなPythonでも ClassName 次のような形で提供する Bokeh.ClassName JavaScriptからですJavaScriptから入手可能な完全モデルリストは、以下の場所で見ることができます。 bokehjs/src/lib/api/models.ts それがそうです。
Bokeh
ClassName
Bokeh.ClassName
JavaScriptからモデルを作成する際には,Pythonオブジェクト初期化式に渡されるすべてのキーワードパラメータをJavaScriptオブジェクトとして渡す.次はどうやって Range1d モデルです。まずPythonでは
xdr = Range1d(start=-0.5, end=20.5)
JavaScriptバージョンに対応しています
var xdr = new Bokeh.Range1d({ start: -0.5, end: 20.5 });
このモデルはおおむね成り立つ.作成後,Bokehモデル属性の両言語での設定方式はまったく同じである.設定します end 値は30に設定した. Range1d 上から使う xdr.end = 30 PythonやJavaScriptで書かれています
end
xdr.end = 30
一例として、以下の例は、軸、グリッド、および線の字形を含む描画を最初から作成する。中の例と比較する examples/models このレベルでPythonからJavaScriptへの変換はほぼ1対1に表示されます
// create some data and a ColumnDataSource var x = Bokeh.LinAlg.linspace(-0.5, 20.5, 10); var y = x.map(function (v) { return v * 0.5 + 3.0; }); var source = new Bokeh.ColumnDataSource({ data: { x: x, y: y } }); // create some ranges for the plot var xdr = new Bokeh.Range1d({ start: -0.5, end: 20.5 }); var ydr = new Bokeh.Range1d({ start: -0.5, end: 20.5 }); // make the plot var plot = new Bokeh.Plot({ title: "BokehJS Plot", x_range: xdr, y_range: ydr, plot_width: 400, plot_height: 400, background_fill_color: "#F2F2F7" }); // add axes to the plot var xaxis = new Bokeh.LinearAxis({ axis_line_color: null }); var yaxis = new Bokeh.LinearAxis({ axis_line_color: null }); plot.add_layout(xaxis, "below"); plot.add_layout(yaxis, "left"); // add grids to the plot var xgrid = new Bokeh.Grid({ ticker: xaxis.ticker, dimension: 0 }); var ygrid = new Bokeh.Grid({ ticker: yaxis.ticker, dimension: 1 }); plot.add_layout(xgrid); plot.add_layout(ygrid); // add a Line glyph var line = new Bokeh.Line({ x: { field: "x" }, y: { field: "y" }, line_color: "#666699", line_width: 2 }); plot.add_glyph(line, source); Bokeh.Plotting.show(plot);
The code above generates the following plot:
BokehJSは、Python Bokehライブラリと同様に、低レベルモデルオブジェクトと対話し、低レベルモデルオブジェクトを構成するための様々な高度なインタフェースを提供する。これらのより高いレベルのインターフェースは現在 Bokeh.Plotting そして Bokeh.Charts それがそうです。
Bokeh.Plotting
Bokeh.Charts
注釈
自.自.起 0.12.2 以下に紹介するAPIはBokehJS APIに分割されており,位置している. bokeh-api.js ファイルは,そのファイルを導入するほか,そのファイルを導入しなければならない. bokeh.js それがそうです。
0.12.2
bokeh-api.js
bokeh.js
JavaScript Bokeh.Plotting APIはPythonのポートです bokeh.plotting 界面したがって、ファイル中の情報は 基本字を使って印刷する ここでの材料に加えて、“ユーザガイド”の部分は、有用な参考とすることができる。
bokeh.plotting
次はPythonの例と非常に似た例です examples/plotting/file/color_scatter.py :
var plt = Bokeh.Plotting; // set up some data var M = 100; var xx = []; var yy = []; var colors = []; var radii = []; for (var y = 0; y <= M; y += 4) { for (var x = 0; x <= M; x += 4) { xx.push(x); yy.push(y); colors.push(plt.color(50+2*x, 30+2*y, 150)); radii.push(Math.random() * 0.4 + 1.7) } } // create a data source var source = new Bokeh.ColumnDataSource({ data: { x: xx, y: yy, radius: radii, colors: colors } }); // make the plot and add some tools var tools = "pan,crosshair,wheel_zoom,box_zoom,reset,save"; var p = plt.figure({ title: "Colorful Scatter", tools: tools }); // call the circle glyph method to add some circle glyphs var circles = p.circle({ field: "x" }, { field: "y" }, { source: source, radius: radii, fill_color: colors, fill_alpha: 0.6, line_color: null }); // show the plot plt.show(p);
JavaScript Bokeh.Charts APIはBokehJS独自の高度なグラフインタフェースである.現在は2つの高度なグラフをサポートしています pie そして bar それがそうです。
pie
bar
Bokeh.Charts.pie
円グラフの作成には、以下の操作を行ってください Bokeh.Charts.pie 基本的な使い方は
Bokeh.Charts.pie(data, { options })
どこへ行くのか. data JavaScriptオブジェクトです labels そして values 鍵と options 以下のいずれかのオプションキーを有するオブジェクト:
data
labels
values
options
width
番号をつける -グラフ幅(画素単位)
height
番号をつける -グラフの高さ(ピクセル)
inner_radius
番号をつける -楔形内半径(画素単位)
outer_radius
番号をつける -楔形の外側半径、画素単位
start_angle
番号をつける -楔形開始角(アーク)
end_angle
番号をつける -楔形の端角(アーク)
center
[[番号、番号]] - (x, y) 円グラフの中心の位置(画素単位)
(x, y)
palette
Palette | Array<Color> -値を配色するためのパレットまたはカラーリストを指定
slice_labels
“ラベル”|“値”|“パーセント” -ツールは、表示すべき内容を提示します。
デフォルトで作成されたブロック Bokeh.Charts.pie ツール提示とホバリングポリシーを自動的に追加します。次はいくつかの例示的なコードです pie 関数,その生成グラフを以下に示す.
var plt = Bokeh.Plotting; var pie_data = { labels: ['Work', 'Eat', 'Commute', 'Sport', 'Watch TV', 'Sleep'], values: [8, 2, 2, 4, 0, 8], }; var p1 = Bokeh.Charts.pie(pie_data); var p2 = Bokeh.Charts.pie(pie_data, { inner_radius: 0.2, start_angle: Math.PI / 2 }); var p3 = Bokeh.Charts.pie(pie_data, { inner_radius: 0.2, start_angle: Math.PI / 6, end_angle: 5 * Math.PI / 6 }); var p4 = Bokeh.Charts.pie(pie_data, { inner_radius: 0.2, palette: "Oranges9", slice_labels: "percentages" }); // add the plot to a document and display it var doc = new Bokeh.Document(); doc.add_root(plt.gridplot( [[p1, p2], [p3, p4]], {plot_width:250, plot_height:250})); Bokeh.embed.add_document_standalone(doc, document.currentScript.parentElement);
Bokeh.Charts.bar
棒グラフを作成するには、以下の操作を実行してください Bokeh.Charts.bar 基本的な使い方は
Bokeh.Charts.bar(data, { options })
どこへ行くのか. data JavaScript配列であり、その要素リストはデータテーブルの“行”から来ています。最初の“行”は列タイトルを含むべきである。以下は、異なる地域の異なる年の販売データを表すことができる例である。
var data = [ ['Region', 'Year', 'Sales'], ['East', 2015, 23000 ], ['East', 2016, 35000 ], ['West', 2015, 16000 ], ['West', 2016, 34000 ], ['North', 2016, 12000 ], ];
似たような pie vt.的 options パラメータは、以下のいずれかのオプションキーを有するオブジェクトである。
stacked
ブル型. -手すりは積むべきか?
orientation
“水平”|“垂直” -バーはどうすればいい?
bar_width
番号をつける -各ストリップの幅(画素単位)
axis_number_format
ひも. -軸目盛り用のフォーマット文字列
デフォルトでは、作成されたブロックを使用します Bokeh.Charts.bar ツール提示とホバリングポリシーを自動的に追加します。次はいくつかの例示的なコードです bar 関数,その生成グラフを以下に示す.
var plt = Bokeh.Plotting; var bar_data = [ ['City', '2010 Population', '2000 Population'], ['NYC', 8175000, 8008000], ['LA', 3792000, 3694000], ['Chicago', 2695000, 2896000], ['Houston', 2099000, 1953000], ['Philadelphia', 1526000, 1517000], ]; var p1 = Bokeh.Charts.bar(bar_data, { axis_number_format: "0.[00]a" }); var p2 = Bokeh.Charts.bar(bar_data, { axis_number_format: "0.[00]a", stacked: true }); var p3 = Bokeh.Charts.bar(bar_data, { axis_number_format: "0.[00]a", orientation: "vertical" }); var p4 = Bokeh.Charts.bar(bar_data, { axis_number_format: "0.[00]a", orientation: "vertical", stacked: true }); plt.show(plt.gridplot([[p1, p2], [p3, p4]], {plot_width:350, plot_height:350}));
以下は,ライブラリの正しい導入および描画の動的作成と修正を示す最小例である.
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Complete Example</title> <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js" integrity="sha384-T2yuo9Oe71Cz/I4X9Ac5+gpEa5a8PpJCDlqKYO0CfAuEszu1JrXLl8YugMqYe3sM" crossorigin="anonymous"></script> <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js" integrity="sha384-98GDGJ0kOMCUMUePhksaQ/GYgB3+NH9h996V88sh3aOiUNX3N+fLXAtry6xctSZ6" crossorigin="anonymous"></script> <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js" integrity="sha384-89bArO+nlbP3sgakeHjCo1JYxYR5wufVgA3IbUvDY+K7w4zyxJqssu7wVnfeKCq8" crossorigin="anonymous"></script> <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-api-2.2.3.min.js" integrity="sha384-eT3dNscgjXmsGsM0ZO+nTwoL2BpJeNQnXH8gmXJmnEjqTb0ZV7c3jJ27FFe/oh1N" crossorigin="anonymous"></script> <script> //The order of CSS and JS imports above is important. </script> <script> // create a data source to hold data var source = new Bokeh.ColumnDataSource({ data: { x: [], y: [] } }); // make a plot with some tools var plot = Bokeh.Plotting.figure({ title:'Example of Random data', tools: "pan,wheel_zoom,box_zoom,reset,save", height: 300, width: 300 }); // add a line with data from the source plot.line({ field: "x" }, { field: "y" }, { source: source, line_width: 2 }); // show the plot, appending it to the end of the current section Bokeh.Plotting.show(plot); function addPoint() { // add data --- all fields must be the same length. source.data.x.push(Math.random()) source.data.y.push(Math.random()) // notify the DataSource of "in-place" changes source.change.emit() } var addDataButton = document.createElement("Button"); addDataButton.appendChild(document.createTextNode("Add Some Data!!!")); document.currentScript.parentElement.appendChild(addDataButton); addDataButton.addEventListener("click", addPoint); addPoint(); addPoint(); </script> </head> <body> </body> </html>