def _rebuild_plot(self): container = self.plot value_range = DataRange1D(low=-1, high=1.0) index_range = DataRange1D(self.index_ds, high="track", tracking_amount=24 * 3600 * 365) color_mapper = cmap(range=value_range) # Remove old plots container.remove(*container.components) for val, row in zip(self.value_ds, self.rows): horizon = HorizonPlot( index=self.index_ds, value=val, index_mapper=LinearMapper(range=index_range, stretch_data=False), value_mapper=BandedMapper(range=DataRange1D(val)), color_mapper=cmap(range=DataRange1D(val)), # color_mapper, negative_bands=False, ) horizon.tools.append(PanTool(horizon, constrain=True, constrain_direction="x")) horizon.overlays.append( PlotLabel(component=horizon, hjustify="right", text=row, overlay_position="outside left") ) container.add(horizon) bottom_axis = PlotAxis( horizon, orientation="bottom", tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem()) ) container.overlays = [bottom_axis] container.request_redraw()
def _rebuild_plot(self): container = self.plot value_range = DataRange1D(low=-1, high=1.) index_range = DataRange1D(self.index_ds, high='track', tracking_amount=24 * 3600 * 365) color_mapper = cmap(range=value_range) # Remove old plots container.remove(*container.components) for val, row in zip(self.value_ds, self.rows): horizon = HorizonPlot( index=self.index_ds, value=val, index_mapper=LinearMapper(range=index_range, stretch_data=False), value_mapper=BandedMapper(range=DataRange1D(val)), color_mapper=cmap(range=DataRange1D(val)), #color_mapper, negative_bands=False, ) horizon.tools.append( PanTool(horizon, constrain=True, constrain_direction="x")) horizon.overlays.append( PlotLabel(component=horizon, hjustify='right', text=row, overlay_position='outside left')) container.add(horizon) bottom_axis = PlotAxis( horizon, orientation="bottom", tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem())) container.overlays = [bottom_axis] container.request_redraw()
def _corr_plot_default(self): diag = self.covar.diagonal() corr = self.covar / np.sqrt(np.outer(diag, diag)) N = len(diag) value_range = DataRange1D(low=-1, high=1) color_mapper = cmap(range=value_range) index = GridDataSource() value = ImageData() mapper = GridMapper(range=DataRange2D(index), y_low_pos=1.0, y_high_pos=0.0) index.set_data(xdata=np.arange(-0.5, N), ydata=np.arange(-0.5, N)) value.set_data(np.flipud(corr)) self.corr_data = value cmap_plot = CMapImagePlot(index=index, index_mapper=mapper, value=value, value_mapper=color_mapper, padding=(40, 40, 100, 40)) yaxis = PlotAxis( cmap_plot, orientation='left', tick_interval=1, tick_label_formatter=lambda x: self.header[int(N - 1 - x)], tick_generator=ShowAllTickGenerator(positions=np.arange(N))) xaxis = PlotAxis( cmap_plot, orientation='top', tick_interval=1, tick_label_formatter=lambda x: self.header[int(x)], tick_label_alignment='edge', tick_generator=ShowAllTickGenerator(positions=np.arange(N))) cmap_plot.overlays.append(yaxis) cmap_plot.overlays.append(xaxis) colorbar = ColorBar( index_mapper=LinearMapper(range=cmap_plot.value_range), plot=cmap_plot, orientation='v', resizable='v', width=10, padding=(40, 5, 100, 40)) container = HPlotContainer(bgcolor='transparent') container.add(cmap_plot) container.add(colorbar) return container
def _create_plot_components(): # Create the data and datasource objects # In order for the date axis to work, the index data points need to # be in units of seconds since the epoch. This is because we are using # the CalendarScaleSystem, whose formatters interpret the numerical values # as seconds since the epoch. high = 1. numpoints = 5000 random.seed(1000) index = create_dates(numpoints) price = 100 * cumprod(random.lognormal(0.0, 0.04, size=numpoints)) changes = price / price[0] - 1. index_ds = ArrayDataSource(index) value_ds = ArrayDataSource(changes, sort_order="none") value_range = DataRange1D(value_ds, low=-high, high=high) index_mapper = LinearMapper(range=DataRange1D(index_ds), stretch_data=False) horizon = HorizonPlot( bands=4, index=index_ds, value=value_ds, index_mapper=index_mapper, value_mapper=BandedMapper(range=DataRange1D(low=0, high=high)), color_mapper=cmap(range=value_range), ) horizon.tools.append( PanTool(horizon, constrain=True, constrain_direction="x")) axis = PlotAxis(mapper=horizon.value_mapper, component=horizon, orientation="left", tick_label_position="outside") horizon.overlays.append(axis) bottom_axis = PlotAxis( horizon, orientation="bottom", tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem())) horizon.overlays.append(bottom_axis) filled = FilledLinePlot( index=index_ds, value=value_ds, index_mapper=index_mapper, value_mapper=LinearMapper(range=value_range, stretch_data=False), fill_color=(0.81960784, 0.89803922, 0.94117647), edge_color='transparent', ) filled.tools.append( PanTool(filled, constrain=True, constrain_direction="x")) axis = PlotAxis(mapper=filled.value_mapper, component=filled, orientation="left", tick_label_position="outside") filled.overlays.append(axis) grid = PlotGrid( mapper=filled.value_mapper, component=filled, orientation='horizontal', line_color='lightgray', line_style="dot", ) filled.underlays.append(grid) colormap = horizon.color_mapper colorbar = ColorBar(index_mapper=LinearMapper(range=colormap.range), color_mapper=colormap, orientation='v', resizable='v', width=20, padding=20) padding = (40, 20, 0, 0) over1 = HPlotContainer(use_backbuffer=True, padding=padding, padding_top=20) over1.add(filled) over1.add(colorbar) over2 = OverlayPlotContainer(padding=padding, padding_bottom=40) over2.add(horizon) return over1, over2
def _create_plot_components(): # Create the data and datasource objects # In order for the date axis to work, the index data points need to # be in units of seconds since the epoch. This is because we are using # the CalendarScaleSystem, whose formatters interpret the numerical values # as seconds since the epoch. high = 1. numpoints = 5000 random.seed(1000) index = create_dates(numpoints) price = 100*cumprod(random.lognormal(0.0, 0.04, size=numpoints)) changes = price/price[0] - 1. index_ds = ArrayDataSource(index) value_ds = ArrayDataSource(changes, sort_order="none") value_range = DataRange1D(value_ds, low=-high, high=high) index_mapper = LinearMapper(range=DataRange1D(index_ds), stretch_data=False) horizon = HorizonPlot( bands = 4, index = index_ds, value = value_ds, index_mapper = index_mapper, value_mapper = BandedMapper(range=DataRange1D(low=0, high=high)), color_mapper = cmap(range=value_range), ) horizon.tools.append(PanTool(horizon, constrain=True, constrain_direction="x")) axis = PlotAxis(mapper = horizon.value_mapper, component=horizon, orientation="left", tick_label_position="outside") horizon.overlays.append(axis) bottom_axis = PlotAxis(horizon, orientation="bottom", tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem())) horizon.overlays.append(bottom_axis) filled = FilledLinePlot( index = index_ds, value = value_ds, index_mapper = index_mapper, value_mapper = LinearMapper(range=value_range, stretch_data=False), fill_color = (0.81960784, 0.89803922, 0.94117647), edge_color = 'transparent', ) filled.tools.append(PanTool(filled, constrain=True, constrain_direction="x")) axis = PlotAxis(mapper = filled.value_mapper, component=filled, orientation="left", tick_label_position="outside") filled.overlays.append(axis) grid = PlotGrid(mapper = filled.value_mapper, component=filled, orientation='horizontal', line_color='lightgray', line_style="dot",) filled.underlays.append(grid) colormap = horizon.color_mapper colorbar = ColorBar(index_mapper=LinearMapper(range=colormap.range), color_mapper=colormap, orientation='v', resizable='v', width=20, padding=20) padding = (40, 20, 0, 0) over1 = HPlotContainer(use_backbuffer=True, padding=padding, padding_top=20) over1.add(filled) over1.add(colorbar) over2 = OverlayPlotContainer(padding = padding, padding_bottom=40) over2.add(horizon) return over1, over2