大規模なデータセットの視覚化
Datashaderは、大規模なデータセットを高速に視覚化するためのPythonライブラリです。
HoloViewsは、Datashaderと統合されていて容易に扱うことができます。
Plotly では数十万のデータを処理できますが、Datashader では数千万から数億のデータを処理できます。
Datashader では、データセット全体ではなく、データセットをラスタライズ(複雑なデータを軽くてシンプルなデータに)して扱います。
サンプルコード
今回は、plotly.pyに含まれる irisデータセットを読み込み、ノイズを追加して150万個のデータ(DataFrame) を生成します。(14行目)
この大規模なデータ(DataFrame)を、HoloViews Datasetにラップします。(16行目)
[ソースコード]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import dash from dash import html from plotly.data import iris
import holoviews as hv from holoviews.plotting.plotly.dash import to_dash from holoviews.operation.datashader import datashade
import numpy as np import pandas as pd
df_original = iris()[["sepal_length", "sepal_width", "petal_length", "petal_width"]] df = pd.concat([df_original + np.random.randn(*df_original.shape) * 0.1 for i in range(10000)])
dataset = hv.Dataset(df)
scatter = datashade( hv.Scatter(dataset, kdims=["sepal_length"], vdims=["sepal_width"])).opts(title="Datashader with %d points" % len(dataset))
app = dash.Dash(__name__) components = to_dash( app, [scatter], reset_button=True )
app.layout = html.Div(components.children)
if __name__ == "__main__": app.run_server(debug=True)
|
[ブラウザで表示]

150万個のデータを散布図で表示することができました。
データの表示範囲を変更したり、ドラッグやスクロールで移動や拡大・縮小を行ってももたつくことなくスムーズに表示できることが確認できます。