Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Failed to execute 'drawImage' on 'CanvasRenderingContext2D' when Canvas instance is embedded in the ipywidgets layout

Offen
#472 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
38/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
javascript, jupyter-notebook, matplotlib, python

Rechercherichtung

Beginne mit dem bereitgestellten Minimalbeispiel, das das ipympl-Backend_nbagg-Canvas innerhalb eines ipywidgets AppLayout verwendet, und reproduziere den Fehler mit dem fehlerhaften Bild in Chrome. Vergleiche das Verhalten zwischen Version 0.7.0 und neueren Versionen; als abgeschlossen gilt die Aufgabe, wenn das Diagramm im eingebetteten Canvas ohne die drawImage-Ausnahme gerendert wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

For my project, it is required to embed Canvas from the ipympl backend in the ipywidgets Layout or AppLayout.
It worked perfectly with version 0.7.0, but with all newer versions the plot image is not rendered in the canvas with exception in Crome browser: Error setting state: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' state.

The minimum example:

import numpy as np
from matplotlib.figure import Figure
from ipympl.backend_nbagg import Canvas as Canvas, FigureManager

class PlotWidget(Canvas):
    
    __num__ = 0
    
    def __init__(self, **kwargs):
        Canvas.__init__(self, Figure(dpi=100, figsize=(6, 5.5)))
        self.resizable = False
        self.header_visible=False
        
        fig = self.figure
        ax = fig.add_subplot(1, 1, 1)
        self.lines, = ax.plot(np.linspace(0, 1, 100), np.linspace(0, 1, 100), 'o-', markersize=2, linewidth=2)
        
        manager = FigureManager(self, self.__num__)
        self.__num__+=1
        self.draw()
    
import ipywidgets.widgets as widgets
from ipywidgets import AppLayout, Layout

class Layout(AppLayout):
    
    def __init__(self, **kwargs):
        AppLayout.__init__(self, **kwargs)
        self.center = PlotWidget(**kwargs)
        if "pane_widths" not in kwargs: 
            self.pane_widths = [1, '650px', '0px']
        if "pane_heights" not in kwargs: 
            self.pane_heights = ['0px', '300px', '0px']

app = Layout()
display(app)

Vorherrschende Sprache
Jupyter Notebook
Sterne
1.7k
Forks
236
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus matplotlib/ipympl

Alle Issues in matplotlib/ipympl

Ähnliche Issues

Weitere Issues zu Data Visualization

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.