Source code for neuralib.dashboard.example

import random

from bokeh.model import Model
from bokeh.models import ColumnDataSource, GlyphRenderer
from bokeh.plotting import figure

from neuralib.dashboard import ViewComponent, View, BokehServer


[docs] class Graph(ViewComponent): data: ColumnDataSource render_dots: GlyphRenderer render_line: GlyphRenderer
[docs] def __init__(self): self.x = [] self.y = [] self.data = ColumnDataSource(data=dict(x=[], y=[])) self.w = 0 self.h = 0
[docs] def plot(self, fig: figure, **kwargs): self.w = fig.width self.h = fig.height self.render_dots = fig.dot( x='x', y='y', source=self.data, size=self.w / 20) self.render_line = fig.line( x='x', y='y', source=self.data)
[docs] def update(self): x = random.random() * self.w y = random.random() * self.h self.x.append(x) self.y.append(y) self.data.data = dict(x=self.x, y=self.y)
[docs] class Top(View): graph: Graph @property def title(self) -> str: return 'A'
[docs] def setup(self) -> Model: fig = figure( width=800, height=800, x_range=(-10, 810), y_range=(-10, 810), toolbar_location='above') self.graph = Graph() self.graph.plot(fig) from bokeh.layouts import column return column(fig)
[docs] def update(self): self.graph.update() self.run_timeout(1000, self.update)
if __name__ == '__main__': VIEW = Top() BokehServer().start(VIEW)