Advertisement
Guest User

Untitled

a guest
Sep 20th, 2013
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.21 KB | None | 0 0
  1. class MultiPlot():
  2.     range_x_min = 0.0
  3.     range_x_max = 0.0
  4.  
  5.     def __init__(self):
  6.         self.container = VPlotContainer(background="transparent")
  7.         self.value_mapper = None
  8.         self.index_mapper = None
  9.         self.data = ArrayPlotData()
  10.  
  11.     def create_sub_container(self, title=None):
  12.         sub_container = OverlayPlotContainer(
  13.             padding_bottom=35,
  14.             padding_top=20,
  15.             padding_left=45,
  16.             padding_right=5,
  17.             fill_padding=True,
  18.             bgcolor="lightgray",
  19.             use_backbuffer=True
  20.         )
  21.  
  22.         sub_container.overlays.append(
  23.             PlotLabel(title,
  24.                       component=sub_container,
  25.                       font="swiss 16",
  26.                       overlay_position="top"
  27.             )
  28.         )
  29.  
  30.         self.value_mapper = None
  31.         self.index_mapper = None
  32.  
  33.         return sub_container
  34.  
  35.     def add_line_plot(self, sub_container, x=None, y=None, flag=None, label=None, color=None):
  36.         if not color:
  37.             color = tuple(COLOR_PALETTE[len(sub_container.components)])
  38.  
  39.         plot = create_line_plot(
  40.             (x, y),
  41.             color=color
  42.         )
  43.  
  44.         if not (self.value_mapper or self.index_mapper):
  45.             self.value_mapper, self.index_mapper = self._setup_plot_tools(plot)
  46.         else:
  47.             self._setup_mapper(plot, self.value_mapper, self.index_mapper)
  48.  
  49.         sub_container.add(plot)
  50.  
  51.     def add_scatter_plot(self, sub_container, x=None, y=None, flag=None, label=None, color=None, size=2.0):
  52.         if not color:
  53.             color = tuple(COLOR_PALETTE[len(sub_container.components)])
  54.  
  55.         plot = create_scatter_plot(
  56.             (x, y),
  57.             color=color,
  58.             marker_size=size
  59.         )
  60.  
  61.         if not (self.value_mapper or self.index_mapper):
  62.             self.value_mapper, self.index_mapper = self._setup_plot_tools(plot)
  63.         else:
  64.             self._setup_mapper(plot, self.value_mapper, self.index_mapper)
  65.  
  66.         sub_container.add(plot)
  67.  
  68.     def add_scatter_line_plot(self, sub_container, x=None, y=None, flag=None, label=None, color=None, size=2.0):
  69.         if not color:
  70.             color = tuple(COLOR_PALETTE[len(sub_container.components)])
  71.  
  72.         data = ArrayPlotData(x=x, y=y)
  73.  
  74.         plot = ScatterLinePlot(
  75.             data=data
  76.             # color=color,
  77.             # marker_size=size
  78.         )
  79.  
  80.         if not (self.value_mapper or self.index_mapper):
  81.             self.value_mapper, self.index_mapper = self._setup_plot_tools(plot)
  82.         else:
  83.             self._setup_mapper(plot, self.value_mapper, self.index_mapper)
  84.  
  85.         sub_container.add(plot)
  86.  
  87.     def get_plot(self, sub_containers):
  88.         for sub_container in sub_containers:
  89.             self.container.add(sub_container)
  90.  
  91.         return self.container
  92.  
  93.     def _setup_plot_tools(self, plot):
  94.         # Make a white background with grids and axes
  95.         plot.bgcolor = "white"
  96.         add_default_grids(plot)
  97.         add_default_axes(plot, htitle='BJD - 167.0')
  98.  
  99.         # Tools
  100.         plot.tools.append(PanTool(plot, drag_button="left"))
  101.         zoom = ZoomTool(plot, tool_mode="box", always_on=False)
  102.         plot.overlays.append(zoom)
  103.  
  104.         # Range selection tool
  105.         value_range = plot.value_mapper.range
  106.         rangeselect = RangeSelection(plot, enable_resize=False, left_button_selects=False)
  107.         plot.tools.append(rangeselect)
  108.         plot.overlays.append(RangeSelectionOverlay(component=plot))
  109.         plot.show_selection = False
  110.         rangeselect.on_trait_event(self.on_selection_changed, "selection")
  111.  
  112.         return plot.value_mapper, plot.index_mapper
  113.  
  114.     def on_selection_changed(self, selection):
  115.         if selection is not None:
  116.             self.range_x_max = selection[1]
  117.             self.range_x_min = selection[0]
  118.  
  119.     def get_selection_range(self):
  120.         return float(self.range_x_min), float(self.range_x_max)
  121.  
  122.     def _setup_mapper(self, plot, value_mapper, index_mapper):
  123.         """Sets up a mapper for given plot"""
  124.         plot.value_mapper = value_mapper
  125.         value_mapper.range.add(plot.value)
  126.         plot.index_mapper = index_mapper
  127.         index_mapper.range.add(plot.index)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement