示例#1
0
文件: client.py 项目: rguter/glue
    def __init__(self,
                 data=None,
                 figure=None,
                 axes=None,
                 layer_artist_container=None):
        """
        Create a new ScatterClient object

        :param data: :class:`~glue.core.data.DataCollection` to use

        :param figure:
           Which matplotlib figure instance to draw to. One will be created if
           not provided

        :param axes:
           Which matplotlib axes instance to use. Will be created if necessary
        """
        Client.__init__(self, data=data)
        figure, axes = init_mpl(figure, axes)
        self.artists = layer_artist_container
        if self.artists is None:
            self.artists = LayerArtistContainer()

        self._layer_updated = False  # debugging
        self._xset = False
        self._yset = False
        self.axes = axes

        self._connect()
        self._set_limits()
示例#2
0
文件: client.py 项目: bmorris3/glue
    def __init__(self, data=None, figure=None, axes=None,
                 layer_artist_container=None):
        """
        Create a new ScatterClient object

        :param data: :class:`~glue.core.data.DataCollection` to use

        :param figure:
           Which matplotlib figure instance to draw to. One will be created if
           not provided

        :param axes:
           Which matplotlib axes instance to use. Will be created if necessary
        """
        Client.__init__(self, data=data)
        figure, axes = init_mpl(figure, axes)
        self.artists = layer_artist_container
        if self.artists is None:
            self.artists = LayerArtistContainer()

        self._layer_updated = False  # debugging
        self._xset = False
        self._yset = False
        self.axes = axes

        self._connect()
        self._set_limits()
示例#3
0
    def __init__(self, data, figure, layer_artist_container=None):
        super(HistogramClient, self).__init__(data)

        self._artists = layer_artist_container or LayerArtistContainer()
        self._figure, self._axes = init_mpl(figure=figure, axes=None)
        self._component = None
        self._saved_nbins = None
        self._xlim_cache = {}
        self._xlog_cache = {}
        self._sync_enabled = True
        self._xlog_curr = False
示例#4
0
文件: client.py 项目: bmorris3/glue
    def __init__(self, data, figure, layer_artist_container=None):
        super(HistogramClient, self).__init__(data)

        self._artists = layer_artist_container or LayerArtistContainer()
        self._figure, self._axes = init_mpl(figure=figure, axes=None)
        self._component = None
        self._saved_nbins = None
        self._xlim_cache = {}
        self._xlog_cache = {}
        self._sync_enabled = True
        self._xlog_curr = False
示例#5
0
    def __init__(self, session, parent=None, wcs=None, state=None):

        super(MatplotlibDataViewer, self).__init__(session, 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)

        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())
示例#6
0
    def __init__(self, session, parent=None):

        super(MatplotlibDataViewer, self).__init__(session, parent)

        # 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)

        # Set up the state which will contain everything needed to represent
        # the current state of the viewer
        self.state = self._state_cls()
        self.state.data_collection = session.data_collection

        # Set up the options widget, which will include options that control the
        # viewer state
        self.options = self._options_cls(viewer_state=self.state,
                                         session=session)

        add_callback(self.state, 'x_min', nonpartial(self.limits_to_mpl))
        add_callback(self.state, 'x_max', nonpartial(self.limits_to_mpl))
        add_callback(self.state, 'y_min', nonpartial(self.limits_to_mpl))
        add_callback(self.state, 'y_max', nonpartial(self.limits_to_mpl))

        self.axes.callbacks.connect('xlim_changed',
                                    nonpartial(self.limits_from_mpl))
        self.axes.callbacks.connect('ylim_changed',
                                    nonpartial(self.limits_from_mpl))

        self.state.add_callback('x_log', nonpartial(self.update_x_log))
        self.state.add_callback('y_log', nonpartial(self.update_y_log))

        self.axes.set_autoscale_on(False)

        # TODO: in future could move the following to a more basic data viewer class

        # When layer artists are removed from the layer artist container, we need
        # to make sure we remove matching layer states in the viewer state
        # layers attribute.
        self._layer_artist_container.on_changed(
            nonpartial(self._sync_state_layers))

        # And vice-versa when layer states are removed from the viewer state, we
        # need to keep the layer_artist_container in sync
        self.state.add_callback('layers',
                                nonpartial(self._sync_layer_artist_container))
示例#7
0
文件: plots.py 项目: rendinam/mosviz
    def __init__(self, parent=None):
        super(Line1DWidget, self).__init__(parent)

        self.figure = plt.figure(facecolor='white')

        # Canvas Widget that displays the `figure` it takes the `figure`
        # instance as a parameter to __init__
        canvas = FigureCanvas(self.figure)

        # Double reference; Glue's toolbar abstraction requires that the
        # central widget of its parent have a reference to the canvas object
        self.central_widget = canvas
        self.central_widget.canvas = canvas

        # Navigation widget, it takes the Canvas widget and a parent
        self.toolbar = MatplotlibViewerToolbar(self)

        self.addToolBar(self.toolbar)
        self.setCentralWidget(self.central_widget)

        _, self._axes = init_mpl(figure=self.figure)
        self._artists = []
示例#8
0
    def __init__(self, session, parent=None, wcs=None, state=None):

        super(MatplotlibDataViewer, self).__init__(session, 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)

        self.state.add_callback('aspect', self.update_aspect)

        self.update_aspect()

        self.state.add_callback('x_min', nonpartial(self.limits_to_mpl))
        self.state.add_callback('x_max', nonpartial(self.limits_to_mpl))
        self.state.add_callback('y_min', nonpartial(self.limits_to_mpl))
        self.state.add_callback('y_max', nonpartial(self.limits_to_mpl))

        self.limits_to_mpl()

        self.state.add_callback('x_log', nonpartial(self.update_x_log))
        self.state.add_callback('y_log', nonpartial(self.update_y_log))

        self.update_x_log()

        self.axes.callbacks.connect('xlim_changed', nonpartial(self.limits_from_mpl))
        self.axes.callbacks.connect('ylim_changed', nonpartial(self.limits_from_mpl))

        self.axes.set_autoscale_on(False)

        self.central_widget.resize(600, 400)
        self.resize(self.central_widget.size())
示例#9
0
文件: client.py 项目: astrofrog/glue
    def _setup_mpl(self, figure, axes):
        figure, axes = init_mpl(figure, axes, wcs=True)
        self._axes = axes
        self._axes.get_xaxis().set_ticks([])
        self._axes.get_yaxis().set_ticks([])
        self._figure = figure

        # custom axes formatter
        def format_coord(x, y):
            data = self.display_data
            if data is None:
                # MPL default method
                return type(self._axes).format_coord(self._axes, x, y)
            info = self.point_details(x, y)
            return '         '.join(info['labels'])

        self._axes.format_coord = format_coord

        self._cid = self._axes.figure.canvas.mpl_connect('button_release_event',
                                                         self.check_update)

        if hasattr(self._axes.figure.canvas, 'homeButton'):
            # test code doesn't always use Glue's custom FigureCanvas
            self._axes.figure.canvas.homeButton.connect(self.check_update)
示例#10
0
    def _setup_mpl(self, figure, axes):
        figure, axes = init_mpl(figure, axes, wcs=True)
        self._axes = axes
        self._axes.get_xaxis().set_ticks([])
        self._axes.get_yaxis().set_ticks([])
        self._figure = figure

        # custom axes formatter
        def format_coord(x, y):
            data = self.display_data
            if data is None:
                # MPL default method
                return type(self._axes).format_coord(self._axes, x, y)
            info = self.point_details(x, y)
            return '         '.join(info['labels'])

        self._axes.format_coord = format_coord

        self._cid = self._axes.figure.canvas.mpl_connect(
            'button_release_event', self.check_update)

        if hasattr(self._axes.figure.canvas, 'homeButton'):
            # test code doesn't always use Glue's custom FigureCanvas
            self._axes.figure.canvas.homeButton.connect(self.check_update)
示例#11
0
 def _setup_axes(self):
     from glue.viewers.common.viz_client import init_mpl
     _, self._axes = init_mpl(self.central_widget.canvas.fig, axes=None, wcs=True)
     self._axes.set_aspect('equal', adjustable='datalim')
示例#12
0
 def _setup_axes(self):
     from glue.viewers.common.viz_client import init_mpl
     _, self._axes = init_mpl(self.central_widget.canvas.fig,
                              axes=None,
                              wcs=True)
     self._axes.set_aspect('equal', adjustable='datalim')