0

I am looking for an interactive visualization python tool that would allow me to select a number of data points and then write only those data points into a new data frame, numpy array, etc. For example, I'd like to visualize all of the equity trades a desk of traders did in one day along with tick-by-tick price data (y axis price, x axis time) then select a subset of them and send them to a new dataframe for further processing. Does anything like that exist? I thought Holoviews might but haven't figured it out yet. Thanks, Colin

CT00
  • 77
  • 1
  • 2
  • 9

1 Answers1

0

Indeed you can do this with Holoviews. In this example it is used in combination with Bokeh. Save the script file, open a command window in the directory of the file and execute: "bokeh serve --myscript.py --show". The "arr" in the code is the array of the selected datapoints.

import numpy as np
import holoviews as hv
import holoviews.plotting.bokeh

renderer = hv.renderer('bokeh')

points = hv.Points(np.random.randn(1000,2 )).opts(plot=dict(tools=['box_select', 'lasso_select']))
selection = hv.streams.Selection1D(source=points)

def selected_info(index):
    arr = points.array()[index]
    print(arr)
    if index:
        label = 'Mean x, y: %.3f, %.3f' % tuple(arr.mean(axis=0))
    else:
        label = 'No selection'
    return points.clone(arr, label=label).opts(style=dict(color='red'))

layout = points + hv.DynamicMap(selected_info, streams=[selection])

doc = renderer.server_doc(layout)
doc.title = 'HoloViews App'

Strictly you don't need holoviews, you can do this also with bokeh alone. There are examples on the bokeh website.

Joris
  • 1,158
  • 1
  • 16
  • 25