def _graph_factory(self, with_image=False): g = Graph( container_dict=dict( padding=0 )) g.new_plot( bounds=[250, 250], resizable='', padding=[30, 0, 0, 30]) cx = self.cx cy = self.cy cbx = self.xbounds cby = self.ybounds tr = self.target_radius # if with_image: # px = self.pxpermm #px is in mm # cbx, cby = self._get_crop_bounds() # #g.set_axis_traits(tick_label_formatter=lambda x: '{:0.2f}'.format((x - w / 2) / px)) # #g.set_axis_traits(tick_label_formatter=lambda x: '{:0.2f}'.format((x - h / 2) / px), axis='y') # # bx, by = g.plots[0].bounds # g.plots[0].x_axis.mapper = LinearMapper(high_pos=bx, # range=DataRange1D(low_setting=self.xbounds[0], # high_setting=self.xbounds[1])) # g.plots[0].y_axis.mapper = LinearMapper(high_pos=by, # range=DataRange1D(low_setting=self.ybounds[0], # high_setting=self.ybounds[1])) # cx += self.image_width / 2 # cy += self.image_height / 2 # tr *= px g.set_x_limits(*cbx) g.set_y_limits(*cby) lp, _plot = g.new_series() t = TargetOverlay(component=lp, cx=cx, cy=cy, target_radius=tr) lp.overlays.append(t) overlap_overlay = OverlapOverlay(component=lp, visible=self.show_overlap ) lp.overlays.append(overlap_overlay) g.new_series(type='scatter', marker='circle') g.new_series(type='line', color='red') return g
poly = convex_hull(poly) xs, ys = poly.T cx, cy = xs.mean(), ys.mean() P = poly.T xs = np.hstack((xs, xs[0])) ys = np.hstack((ys, ys[0])) else: xs, ys = poly.T xs = np.hstack((xs, xs[0])) ys = np.hstack((ys, ys[0])) cx, cy = xs.mean(), ys.mean() # plot original g.new_series(xs, ys) g.set_x_limits(min(xs), max(xs), pad='0.1') g.set_y_limits(min(ys), max(ys), pad='0.1') for ps in npoints: for i in range(0, len(ps), 2): p1, p2 = ps[i], ps[i + 1] g.new_series((p1[0], p2[0]), (p1[1], p2[1]), color='black') # plot offset polygon # poly = sort_clockwise(poly, poly) opoly = polygon_offset(poly, -500) if use_convex_hull: opoly = convex_hull(opoly) xs, ys, _ = opoly.T xs = np.hstack((xs, xs[0]))