WebGLを使用した加速

BokehはWebGLレンダリングを使用するための限られたサポートを提供しています。これは,大きなデータセットを可視化する際に非常に有用である.

WebGLとは何ですか?

WebGL グラフィックス処理ユニット(GPU)のハードウェアを使用してブラウザ内でのコンテンツの提示を加速させることを可能にするJavaScript APIである。WebGLは標準化されており,すべての現代ブラウザで利用可能である.

WebGLの有効化方法

BokehでWebGLを有効にするには、描画の設定をお願いします output_backend 属性が "webgl"

p = figure(output_backend="webgl")

支持する.

BokehオブジェクトのサブセットのみをWebGLにレンダリングすることができる。現在、円形と線の字形、および多くのマークをサポートしている:星番号、円形、正方形、菱形、三角形、倒置_三角形、CROSS、CORCLE_CROSS、Square_CROSS、DARNARD_CROSS、x、Square_x、COUND_x。1つの描画で複数の字形を安全に組み合わせることができます。いくつかのフォントがWebGLでレンダリングされていても、そうでないものもあります。

実例.

WebGLを有効にした場合の1万個の散点円をプロットした例を以下に示す。詳細レベルの縮小サンプリングがなくても、描画を滑らかに平行移動およびスケーリングすることができることに留意されたい。

import numpy as np

from bokeh.plotting import figure, output_file, show

output_file("scatter10k.html", title="scatter 10k points")

N = 10000

x = np.random.normal(0, np.pi, N)
y = np.sin(x) + np.random.normal(0, 0.2, N)

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

p = figure(tools=TOOLS, output_backend="webgl")
p.circle(x, y, alpha=0.1, nonselection_alpha=0.001)

show(p)

これと同様に,次の図は1万個の点で1つの線を描画する方法を示している.

import numpy as np

from bokeh.plotting import figure, output_file, show

output_file("line10k.html", title="line10k.py example")

N = 10000
x = np.linspace(0, 10*np.pi, N)
y = np.cos(x) + np.sin(2*x+1.25) + np.random.normal(0, 0.001, (N, ))

p = figure(title="A line consisting of 10k points", output_backend="webgl")
p.line(x, y, color="#22aa22", line_width=3)

show(p)