Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def update_main_plot(self):
""" Build main plot
"""
self.ts_plot = ToolbarPlot(self.arr_plot_data)
for i, k in enumerate([k for k in self.ts_data.keys() if k != "index"]):
renderer = self.ts_plot.plot(("index", k), name = k, color = colors[i % len(colors)])[0]
if self.index_is_dates:
# Index was an array of datetime: overwrite the x axis
self.ts_plot.x_axis = None
x_axis = PlotAxis(self.ts_plot, orientation="bottom",
tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem()))
self.ts_plot.overlays.append(x_axis)
self.ts_plot.x_grid.tick_generator = x_axis.tick_generator
if self.data_file:
self.ts_plot.title = ("Time series visualization from %s"
% (os.path.split(self.data_file)[1]))
else:
self.ts_plot.title = "Time series visualization"
attach_tools(self.ts_plot)
# Attach the range selection to the last renderer; any one will do
self.ts_plot.tools.append(RangeSelection(renderer, left_button_selects = False,
auto_handle_event = False))
# Attach the corresponding overlay
self._range_selection_overlay = RangeSelectionOverlay(renderer,
metadata_name="selections")
# 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 _create_plot(self, times, prices):
cls = self._renderer_map[self.plottype]
if self.plot is None:
index_mapper = LinearMapper(range=DataRange1D(times))
value_mapper = LinearMapper(range=DataRange1D(prices))
else:
index_mapper = self.plot.index_mapper
value_mapper = self.plot.value_mapper
price_plot = cls(times = times, prices = prices,
index_mapper = index_mapper,
value_mapper = value_mapper,
bgcolor = "white",
border_visible = True)
# Set the plot's bottom axis to use the Scales ticking system
ticker = ScalesTickGenerator(scale=CalendarScaleSystem())
bottom_axis = PlotAxis(price_plot, orientation="bottom",
tick_generator = ticker)
price_plot.overlays.append(bottom_axis)
price_plot.overlays.append(PlotAxis(price_plot, orientation="left"))
hgrid, vgrid = add_default_grids(price_plot)
vgrid.tick_generator = bottom_axis.tick_generator
# Add pan and zoom
price_plot.tools.append(PanTool(price_plot, constrain=True,
constrain_direction="x"))
price_plot.overlays.append(
ZoomTool(price_plot, drag_button="right", always_on=True,
tool_mode="range", axis="index"))
return price_plot
def update_main_plot(self):
""" Build main plot
"""
self.ts_plot = ToolbarPlot(self.arr_plot_data)
for i, k in enumerate([k for k in self.ts_data.keys() if k != "index"]):
self.ts_plot.plot(("index", k), name = k, color = colors[i % len(colors)])
if self.index_is_dates:
# Index was an array of datetime: overwrite the x axis
self.ts_plot.x_axis = None
x_axis = PlotAxis(self.ts_plot, orientation="bottom",
tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem()))
self.ts_plot.overlays.append(x_axis)
self.ts_plot.x_grid.tick_generator = x_axis.tick_generator
if self.data_file:
self.ts_plot.title = "Time series visualization from %s" % self.data_file
else:
self.ts_plot.title = "Time series visualization"
attach_tools(self.ts_plot)
xmapper = LinearMapper(range=DataRange1D(time_ds))
vol_mapper = LinearMapper(range=DataRange1D(vol_ds))
price_mapper = LinearMapper(range=DataRange1D(price_ds))
price_plot = FilledLinePlot(index = time_ds, value = price_ds,
index_mapper = xmapper,
value_mapper = price_mapper,
edge_color = "blue",
face_color = "paleturquoise",
bgcolor = "white",
border_visible = True)
price_plot.overlays.append(PlotAxis(price_plot, orientation='left')),
# Set the plot's bottom axis to use the Scales ticking system
bottom_axis = PlotAxis(price_plot, orientation="bottom",# mapper=xmapper,
tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem()))
price_plot.overlays.append(bottom_axis)
hgrid, vgrid = add_default_grids(price_plot)
vgrid.tick_generator = bottom_axis.tick_generator
price_plot.tools.append(PanTool(price_plot, constrain=True,
constrain_direction="x"))
price_plot.overlays.append(ZoomTool(price_plot, drag_button="right",
always_on=True,
tool_mode="range",
axis="index",
max_zoom_out_factor=10.0,
))
vol_plot = BarPlot(index = time_ds, value = vol_ds,
index_mapper = xmapper,
value_mapper = vol_mapper,
def setup(self, x, y, ans):
p = self.new_plot()
p.padding_left = 60
p.y_axis.tick_label_formatter = tick_formatter
p.y_axis.tick_generator = StaticTickGenerator()
p.y_axis.title = 'Analysis Type'
# p.y_grid.line_style='solid'
# p.y_grid.line_color='green'
# p.y_grid.line_weight = 1.5
self.set_y_limits(min_=-1, max_=len(TICKS))
p.index_range.tight_bounds = False
p.x_axis.tick_generator = ScalesTickGenerator(scale=CalendarScaleSystem())
p.x_grid.tick_generator = p.x_axis.tick_generator
p.x_axis.title = 'Time'
# p.y_axis.tick_label_rotate_angle = 45
scatter, _ = self.new_series(x, y, type='scatter', marker_size=1.5,
selection_marker='circle', selection_marker_size=2.5)
broadcaster = BroadcasterTool()
scatter.tools.append(broadcaster)
point_inspector = AnalysisPointInspector(scatter,
analyses=ans,
value_format=get_analysis_type,
additional_info=lambda x: ('Time={}'.format(x.rundate),
'Project={}'.format(x.project)))
#value_range = plot.value_mapper.range
#index_range = plot.index_mapper.range
plt[0].active_tool = RangeSelection(plt[0], left_button_selects=True)
plt[0].active_tool.selection=[index[sel_range_low_idx], index[sel_range_high_idx]]
plt[0].overlays.append(RangeSelectionOverlay(component=plt[0]))
#plot.bgcolor = "white"
plot.padding = 50
add_default_grids(plot)
# Set the plot's bottom axis to use the Scales ticking system
scale_sys = CalendarScaleSystem(fill_ratio=0.4,
default_numlabels=5,
default_numticks=10,)
tick_gen = ScalesTickGenerator(scale=scale_sys)
bottom_axis = PlotAxis(plot, orientation="bottom",
tick_generator=tick_gen,
label_color="white",
line_color="white")
# Hack to remove default axis - TODO: how do I *replace* an axis?
del(plot.underlays[-4])
plot.overlays.append(bottom_axis)
plot.legend.visible = True
return plot
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)
def _create_returns_plot(self):
plot = Plot(self.plotdata)
plot.legend.visible = True
#FIXME: The legend move tool doesn't seem to quite work right now
#plot.legend.tools.append(LegendTool(plot.legend))
plot.x_axis = None
x_axis = PlotAxis(plot, orientation="bottom",
tick_generator=ScalesTickGenerator(scale=CalendarScaleSystem()))
plot.overlays.append(x_axis)
plot.x_grid.tick_generator = x_axis.tick_generator
for i, name in enumerate(self.plotdata.list_data()):
if name == "times":
continue
renderer = plot.plot(("times", name), type="line", name=name,
color=tuple(COLOR_PALETTE[i]))[0]
# Tricky: need to set auto_handle_event on the RangeSelection
# so that it passes left-clicks to the PanTool
# FIXME: The range selection is still getting the initial left down
renderer.tools.append(RangeSelection(renderer, left_button_selects = False,
auto_handle_event = False))
plot.tools.append(PanTool(plot, drag_button="left", constrain=True,
constrain_direction="x"))
plot.overlays.append(ZoomTool(plot, tool_mode="range", max_zoom_out=1.0))