Bokeh 0.7.1: Dynamisch Hinzufügen von Plot zu Bokeh-Server Generierte vorhandene Seite

Ich verwende Bokeh-Server, um Daten-Streaming über tcp zu Plots zu behandeln, die ich derzeit mit Browser über output_server anzeigen kann. Ich möchte in der Lage sein, dynamisch mehr Plots zur aktuellen Browser-Seite hinzuzufügen, da die Daten durch die Steckdose kommen. Ein Teil meiner Schwierigkeiten ist, dass ich nicht ganz verstehe, wie Cursession () und curdoc () Arbeit / wie sie anders sind.

Mein aktueller Code sieht so aus:

plots = [] if create_new_plot: plots.append(create_new_plot_def()) if open_new_tab: show(plots) open_new_tab = False else: curdoc().add(plots) 

Wenn ich das laufe, bekomme ich einen Fehler, dass das 'list'-Objekt keine Attribute' references 'hat. Um dies zu beheben, scheint es, dass ich durchschleifen und jede Handlung einzeln hinzufügen muss, aber das geht auch nicht. Die plots[] enthält eine laufende Liste aller Plotobjekte, die ich zur aktuellen Zeit angezeigt hätte. Eine Arbeit, die ich gefunden habe, ist, nur Show () jedes Mal zu verwenden, aber das öffnet eine neue Registerkarte in meinem Browser jedes Mal, was nicht praktisch / elegant ist.

Traditionell verwende ich cursession (). Add_object () um die Datenquelle auf meinen Plots zu aktualisieren. Es scheint mir, dass cursession () alle Daten-Backend behandelt, während curdoc () die tatsächliche Visualisierung auf der Seite steuert. Ist das richtig?

Gibt es eine Möglichkeit für mich, die Anzeige eines brandneuen Plots, auf der gleichen vorhandenen Browser-Seite auszulösen, dh Dokument? Kann jemand kurz erklären, wie man cursession () und curdoc () richtig benutzt? Vielen Dank!


Edit: Ich habe eine Fix gefunden, aber immer noch nicht um die mehrere show() Anrufe, die mehrere Browser-Tabs zu öffnen. Mein Code sieht jetzt so aus:

 if open_tab: show(grid_plot) open_tab = False else: curdoc().clear() curdoc().add(grid_plot) show() 

One Solution collect form web for “Bokeh 0.7.1: Dynamisch Hinzufügen von Plot zu Bokeh-Server Generierte vorhandene Seite”

Ich fand eine Lösung mit Push (), auch in io.py. Das neue Code-Snippet funktioniert:

 if open_tab: show(grid_plot) open_tab = False else: curdoc().clear() curdoc().add(grid_plot) push() 

Dabei wird die HTML-Seite aktualisiert, anstatt eine zweite doppelte Seite generiert (neuer Tab).

Überprüfen Sie dies: https://groups.google.com/a/continuum.io/d/msg/bokeh/rMDt1sT5Cwk/fkKfS8yeTO8J für eine Erläuterung zu curdoc () vs cursession (). Achten Sie auf die Dokumentation in Kürze.

  • Wer kann ich den Fall in Python ändern machen oberen unteren und umgekehrt python
  • Python Tk Fenster legt auf
  • Verschlüsselung / UnEncrypt Python Scripts in C
  • Warum ist nicht verhaltens dokumentierte manuelle Integration mit Django arbeiten?
  • Python 2.7.x Tkinter Popup-Menü werfen tclError
  • MATLAB interp2d konnte nicht in Python scipy.interp interpretiert werden
  • Multiprocessing in Python / Schüsselsuppe
  • Unicode-Suche funktioniert nicht
  • Python install lxml auf mac os 10.10.1
  • Zwei Listen, schneller Vergleich in Python
  • TypeError: Coercing zu Unicode: benötigt String oder Puffer, kein Typ gefunden
  • Python ist die beste Programmiersprache der Welt.