Beispiel #1
0
    def __init__(self, obj, name=None):
        r"""

        TESTS::

            sage: from sage_explorer import MPLWidget
            sage: w = MPLWidget(sin)
            sage: w.name
            'sin'
            sage: w = MPLWidget(list(cremona_curves(srange(35)))[0])
            sage: w.name
            'Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field'
            sage: x, y = var('x y')
            sage: g(x,y) = x**2 + y**2
            sage: w = MPLWidget(g)
            sage: w.name
            '(x, y) |--> x^2 + y^2'
        """

        plt = guess_plot(obj)
        fig = plt.matplotlib()
        fig.set_label(" ")
        apply_css(".jupyter-matplotlib-figure > .widget-label { height: 0 }")
        Canvas.__init__(self, fig)
        self.value = obj
        if not name:
            name = repr(obj)
        self.name = name
        manager = FigureManager(self, 1)

        def closer(event):
            Gcf.destroy(num)

        self.mpl_connect('close_event', closer)
    def _get_widget(self, fig):
        import matplotlib
        old_backend = getattr(matplotlib.backends, 'backend', 'agg')

        from ipympl.backend_nbagg import FigureManager, Canvas, is_interactive
        from matplotlib._pylab_helpers import Gcf

        matplotlib.use(old_backend)

        def closer(event):
            Gcf.destroy(0)

        canvas = Canvas(fig)
        fig.patch.set_alpha(0)
        manager = FigureManager(canvas, 0)

        if is_interactive():
            fig.canvas.draw_idle()

        canvas.mpl_connect('close_event', closer)
        return manager
Beispiel #3
0
    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()