Wie kann ich ähnliche Plots mit ipywidgets effizient mit Jupyter Notebook anzeigen?Wie man Element im Diagramm mit ipywidgets effizient ersetzt?
Ich möchte interaktiv ein schweres Diagramm (schwer in dem Sinne, dass es viele Datenpunkte hat und einige Zeit dauert, um es zu plotten) und ein einzelnes Element davon mit Interaktion von ipywidgets ändern, ohne die komplizierte Handlung neu zu plotten. Gibt es dafür eine eingebaute Funktionalität?
im Grunde, was ich versuche zu tun ist,
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact
import matplotlib.patches as patches
%matplotlib inline #ideally nbagg
def complicated plot(t):
plt.plot(HEAVY_DATA_SET)
ax = plt.gca()
p = patches.Rectangle(something_that_depends_on_t)
ax.add_patch(p)
interact(complicatedplot, t=(1, 100));
Gerade jetzt ist es bis zu 2 Sekunden für jede Replot nimmt. Ich erwarte, dass es Möglichkeiten gibt, die Figur dort zu halten und nur das Rechteck zu ersetzen.
Ein Hack wäre, eine Figur des konstanten Teils zu erstellen, es zum Hintergrund der Handlung zu machen und den rechteckigen Teil nur grafisch darzustellen. aber die Geräusche zu schmutzig
Danke
Können Sie weitere Details darüber hinzufügen, was Sie wirklich tun möchten? In Streudiagrammen zum Beispiel, wenn Ihr Plot in der 'p'-Variable referenziert wird, könnten Sie einfach' p.set_offsets' verwenden, um die Daten neu zu definieren. Vielleicht kannst du etwas wie "ax.get_children()" machen und eines dieser Objekte verändern. Und für die Widgets denke ich, dass ipywidgets eine 'observe'-Methode haben, in der Sie eine Funktion definieren können, in Ihrem Fall können Sie die Funktion zum Ändern Ihres Plots definieren. –
Ich möchte 100 Liniendiagramme anzeigen (plt.plot (HEAVY_DATA_SET)) und dann fügen Sie einfach ein vertikales Rechteck über diese Linien hinzu. – gota
Vielleicht können Sie das Rechteck aus 'ax.get_children()' entfernen und das Rechteck einfach neu zeichnen? Zum Beispiel, wenn Sie 'ax.get_children()' aufrufen, werden Sie in der Liste einige '