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 __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 _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