def _update_projection(self, *args): self.figure.delaxes(self.axes) _, self.axes = init_mpl(self.figure, projection=self.state.plot_mode) self.remove_all_toolbars() self.initialize_toolbar() for layer in self.layers: layer._set_axes(self.axes) layer.state.vector_mode = 'Cartesian' layer.state._update_points_mode() layer.update() self.axes.callbacks.connect('xlim_changed', self.limits_from_mpl) self.axes.callbacks.connect('ylim_changed', self.limits_from_mpl) self.update_x_axislabel() self.update_y_axislabel() self.update_x_ticklabel() self.update_y_ticklabel() # Reset and roundtrip the limits to have reasonable and synced limits when changing self.state.x_log = self.state.y_log = False self.state.reset_limits() if self.using_polar(): self.state.full_circle() self.limits_to_mpl() self.limits_from_mpl() # We need to update the tick marks # to account for the radians/degrees switch in polar mode # Also need to add/remove axis labels as necessary self._update_axes() self.figure.canvas.draw_idle()
def __init__(self, session, parent=None, wcs=None, state=None, projection=None): super(MatplotlibDataViewer, self).__init__(session, parent=parent, state=state) # Use MplWidget to set up a Matplotlib canvas inside the Qt window self.mpl_widget = MplWidget() self.setCentralWidget(self.mpl_widget) # TODO: shouldn't have to do this self.central_widget = self.mpl_widget self.figure, self.axes = init_mpl(self.mpl_widget.canvas.fig, wcs=wcs, projection=projection) MatplotlibViewerMixin.setup_callbacks(self) self.central_widget.resize(600, 400) self.resize(self.central_widget.size()) self._monitor_computation = QTimer() self._monitor_computation.setInterval(500) self._monitor_computation.timeout.connect(self._update_computation)
def __init__(self, parent=None): super(Line1DWidget, self).__init__(parent) self.central_widget = MplWidget() self.setCentralWidget(self.central_widget) _, self._axes = init_mpl(figure=self.central_widget.canvas.fig) self.initialize_toolbar() self._artists = []
def __init__(self, session, parent=None, wcs=None, state=None): super(MatplotlibJupyterViewer, self).__init__(session, state=state) self.figure = Figure(figsize=(10, 6)) self.canvas = FigureCanvasNbAgg(self.figure) self.canvas.manager = FigureManager(self.canvas, 0) self.figure, self.axes = init_mpl(self.figure, wcs=wcs) MatplotlibViewerMixin.setup_callbacks(self)
def __init__(self, parent=None): super(Line1DWidget, self).__init__(parent) self.central_widget = MplWidget() self.setCentralWidget(self.central_widget) _, self._axes = init_mpl(figure=self.central_widget.canvas.fig) self.initialize_toolbar() self._artists = []
def __init__(self, projection, x_lim, y_lim, x_scale, y_scale): self._state = { 'projection': projection, 'x_lim': x_lim, 'y_lim': y_lim, 'x_scale': x_scale, 'y_scale': y_scale } _, axes = init_mpl(Figure(), projection=self._state['projection']) axes.set_xscale(self._state['x_scale']) axes.set_yscale(self._state['y_scale']) if self._state['projection'] not in [ 'aitoff', 'hammer', 'lambert', 'mollweide' ]: axes.set_xlim(self._state['x_lim']) axes.set_ylim(self._state['y_lim']) self._transform = (axes.transData + axes.transAxes.inverted()).frozen()
def __init__(self, session, parent=None, wcs=None, state=None): self.figure = Figure() self.canvas = Canvas(self.figure) self.canvas.manager = FigureManager(self.canvas, 0) self.figure, self.axes = init_mpl(self.figure, wcs=wcs) # FIXME: The following is required for now for the tools to work self.central_widget = self.figure self._axes = self.axes super(MatplotlibJupyterViewer, self).__init__(session, state=state) MatplotlibViewerMixin.setup_callbacks(self) self.css_widget = HTML(REMOVE_TITLE_CSS) self.create_layout()
def __init__(self, session, parent=None, wcs=None, state=None): super(MatplotlibDataViewer, self).__init__(session, parent=parent, state=state) # Use MplWidget to set up a Matplotlib canvas inside the Qt window self.mpl_widget = MplWidget() self.setCentralWidget(self.mpl_widget) # TODO: shouldn't have to do this self.central_widget = self.mpl_widget self.figure, self.axes = init_mpl(self.mpl_widget.canvas.fig, wcs=wcs) MatplotlibViewerMixin.setup_callbacks(self) self.central_widget.resize(600, 400) self.resize(self.central_widget.size()) self._monitor_computation = QTimer() self._monitor_computation.setInterval(500) self._monitor_computation.timeout.connect(self._update_computation)
def _update_projection(self, *args): self.figure.delaxes(self.axes) _, self.axes = init_mpl(self.figure, projection=self.state.plot_mode) for layer in self.layers: layer._set_axes(self.axes) layer.state.vector_mode = 'Cartesian' layer.update() self.axes.callbacks.connect('xlim_changed', self.limits_from_mpl) self.axes.callbacks.connect('ylim_changed', self.limits_from_mpl) self.removeToolBar(self.toolbar) self.initialize_toolbar() self.update_x_axislabel() self.update_y_axislabel() self.update_x_ticklabel() self.update_y_ticklabel() # Reset and roundtrip the limits to have reasonable and synced limits when changing self.state.x_log = self.state.y_log = False self.state.reset_limits() self.limits_to_mpl() self.limits_from_mpl() self.figure.canvas.draw_idle()
def __init__(self, session, parent=None, wcs=None, state=None): super(MatplotlibDataViewer, self).__init__(session, parent=parent, state=state) # Use MplWidget to set up a Matplotlib canvas inside the Qt window self.mpl_widget = MplWidget() self.setCentralWidget(self.mpl_widget) # TODO: shouldn't have to do this self.central_widget = self.mpl_widget self.figure, self._axes = init_mpl(self.mpl_widget.canvas.fig, wcs=wcs) for spine in self._axes.spines.values(): spine.set_zorder(ZORDER_MAX) self.loading_rectangle = Rectangle((0, 0), 1, 1, color='0.9', alpha=0.9, zorder=ZORDER_MAX - 1, transform=self.axes.transAxes) self.loading_rectangle.set_visible(False) self.axes.add_patch(self.loading_rectangle) self.loading_text = self.axes.text( 0.4, 0.5, 'Computing', color='k', zorder=self.loading_rectangle.get_zorder() + 1, ha='left', va='center', transform=self.axes.transAxes) self.loading_text.set_visible(False) self.state.add_callback('aspect', self.update_aspect) self.update_aspect() self.state.add_callback('x_min', self.limits_to_mpl) self.state.add_callback('x_max', self.limits_to_mpl) self.state.add_callback('y_min', self.limits_to_mpl) self.state.add_callback('y_max', self.limits_to_mpl) self.limits_to_mpl() self.state.add_callback('x_log', self.update_x_log, priority=1000) self.state.add_callback('y_log', self.update_y_log, priority=1000) self.update_x_log() self.axes.callbacks.connect('xlim_changed', self.limits_from_mpl) self.axes.callbacks.connect('ylim_changed', self.limits_from_mpl) self.axes.set_autoscale_on(False) self.state.add_callback('x_axislabel', self.update_x_axislabel) self.state.add_callback('x_axislabel_weight', self.update_x_axislabel) self.state.add_callback('x_axislabel_size', self.update_x_axislabel) self.state.add_callback('y_axislabel', self.update_y_axislabel) self.state.add_callback('y_axislabel_weight', self.update_y_axislabel) self.state.add_callback('y_axislabel_size', self.update_y_axislabel) self.state.add_callback('x_ticklabel_size', self.update_x_ticklabel) self.state.add_callback('y_ticklabel_size', self.update_y_ticklabel) self.update_x_axislabel() self.update_y_axislabel() self.update_x_ticklabel() self.update_y_ticklabel() self.central_widget.resize(600, 400) self.resize(self.central_widget.size()) self._monitor_computation = QTimer() self._monitor_computation.setInterval(500) self._monitor_computation.timeout.connect(self._update_computation)
def _setup_axes(self): _, self._axes = init_mpl(self.central_widget.canvas.fig, axes=None, wcs=True) self._axes.set_aspect('equal', adjustable='datalim')
def __init__(self, session, parent=None, wcs=None, state=None): super(HeadlessImageViewer, self).__init__(session, state=state) self.figure, self.axes = init_mpl(wcs=True) MatplotlibViewerMixin.setup_callbacks(self) MatplotlibImageMixin.setup_callbacks(self)
def __init__(self, session, parent=None, wcs=None, state=None): super(MatplotlibDataViewer, self).__init__(session, parent=parent, state=state) # Use MplWidget to set up a Matplotlib canvas inside the Qt window self.mpl_widget = MplWidget() self.setCentralWidget(self.mpl_widget) # TODO: shouldn't have to do this self.central_widget = self.mpl_widget self.figure, self._axes = init_mpl(self.mpl_widget.canvas.fig, wcs=wcs) for spine in self._axes.spines.values(): spine.set_zorder(ZORDER_MAX) self.loading_rectangle = Rectangle((0, 0), 1, 1, color='0.9', alpha=0.9, zorder=ZORDER_MAX - 1, transform=self.axes.transAxes) self.loading_rectangle.set_visible(False) self.axes.add_patch(self.loading_rectangle) self.loading_text = self.axes.text(0.4, 0.5, 'Computing', color='k', zorder=self.loading_rectangle.get_zorder() + 1, ha='left', va='center', transform=self.axes.transAxes) self.loading_text.set_visible(False) self.state.add_callback('aspect', self.update_aspect) self.update_aspect() self.state.add_callback('x_min', self.limits_to_mpl) self.state.add_callback('x_max', self.limits_to_mpl) self.state.add_callback('y_min', self.limits_to_mpl) self.state.add_callback('y_max', self.limits_to_mpl) self.limits_to_mpl() self.state.add_callback('x_log', self.update_x_log, priority=1000) self.state.add_callback('y_log', self.update_y_log, priority=1000) self.update_x_log() self.axes.callbacks.connect('xlim_changed', self.limits_from_mpl) self.axes.callbacks.connect('ylim_changed', self.limits_from_mpl) self.axes.set_autoscale_on(False) self.state.add_callback('x_axislabel', self.update_x_axislabel) self.state.add_callback('x_axislabel_weight', self.update_x_axislabel) self.state.add_callback('x_axislabel_size', self.update_x_axislabel) self.state.add_callback('y_axislabel', self.update_y_axislabel) self.state.add_callback('y_axislabel_weight', self.update_y_axislabel) self.state.add_callback('y_axislabel_size', self.update_y_axislabel) self.state.add_callback('x_ticklabel_size', self.update_x_ticklabel) self.state.add_callback('y_ticklabel_size', self.update_y_ticklabel) self.update_x_axislabel() self.update_y_axislabel() self.update_x_ticklabel() self.update_y_ticklabel() self.central_widget.resize(600, 400) self.resize(self.central_widget.size()) self._monitor_computation = QTimer() self._monitor_computation.setInterval(500) self._monitor_computation.timeout.connect(self._update_computation)