HoloViews⑤(BoundsX stream)

BoundsX stream

HoloViewsでは、グラフに基づいた統計情報を表示することができます。

グラフの特定範囲を指定することで、その指定範囲のデータについての統計情報に反映可能です。

[ソースコード]

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
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-
import dash
from dash import html

import pandas as pd
import numpy as np
import holoviews as hv
from holoviews import streams
from holoviews.plotting.plotly.dash import to_dash

n = 200
xs = np.linspace(0, 1, n)
ys = np.cumsum(np.random.randn(n))
df = pd.DataFrame({'x': xs, 'y': ys})
curve = hv.Scatter(df)

def make_from_boundsx(boundsx):
sub = df.set_index('x').loc[boundsx[0]:boundsx[1]]
return hv.Table(sub.describe().reset_index().values, 'stat', 'value')

dmap = hv.DynamicMap(
make_from_boundsx, streams=[streams.BoundsX(source=curve, boundsx=(0, 0))]
)

layout = curve + dmap

# Create App
app = dash.Dash(__name__)

# Dash display
components = to_dash(
app, [layout], reset_button=True
)

app.layout = html.Div(components.children)

if __name__ == '__main__':
app.run_server(debug=True)

[ブラウザで表示]

散布図統計情報のテーブルが表示されました。

ツールバーからBox Selectをクリックし、グラフの特定範囲を選択すると選択されたデータに基づいた統計情報が右のテーブルに反映されます。

ツールバーから選択モードを変更すると、グラフを移動したり拡大・縮小表示したりすることもできます。