plotly / plotly/plotly.py

Adding N annotations takes O(N^2) time

Offen
#5,316 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug P2 performance
Vorherrschende Sprache
Python
Sterne
18.8k
Forks
2.8k
Ø Merge
16 Std. 26 Min.
Gemergte PRs (30 T.)
21

Beschreibung

Plotly is unreasonably slow to add more than a few hundred annotations to a plot. This code

import time

import plotly


fig = plotly.graph_objects.Figure()

NUM_ANNOTATIONS=1000

start_time = time.monotonic()
for i in range(NUM_ANNOTATIONS):
    fig.add_annotation(
        x=i,
        y=time.monotonic() - start_time,
        text=str(i),
    )
    print(i)
fig.update_layout(
    xaxis_range=[0,NUM_ANNOTATIONS],
    yaxis_range=[0,time.monotonic() - start_time],
    xaxis_title_text="# Annotations",
    yaxis_title_text="Cumulative Time [s]",
)
fig.show()

produces this plot

Image

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie damit, die Reproduktion aus dem Issue auszuführen und die wiederholten Aufrufe von fig.add_annotation zu profilieren. Verfolgen Sie den Python Figure-Annotationspfad, um zu ermitteln, wo die kumulative Kostenentwicklung zunimmt, und überprüfen Sie anschließend, dass das Hinzufügen vieler Annotationen mit demselben Skript kein quadratisches Verhalten mehr zeigt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
data-visualization, performance
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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