Kliknięcie przycisku "w górę" w poniższym kodzie tworzy ciąg cyfr zamiast aktualizowania istniejącej figury. Jak zaktualizować istniejącą figurę?bokeh z widżetem IPython Notatnik: dodatkowe liczby wyglądające na
from IPython.html import widgets
import bokeh.plotting as bp
from IPython.display import display
from numpy.random import randn
bp.output_notebook()
m = 1000
n = 1000
df = pandas.DataFrame(randn(m, n)).cumsum()
bp.hold()
bp.figure(figsize=(4, 8))
def doplot(i):
bp.line(df.index, df.icol(i), color='red', legend='here')
bp.show()
class A:
def __init__(self):
self.i = 0
self.doplot()
def incr(self, something):
self.i += 1
print(self.i)
self.doplot()
def decr(self, something):
self.i -= 1
self.doplot()
def doplot(self):
doplot(self.i)
a = A()
button = widgets.ButtonWidget(description='up')
button.on_click(a.incr)
buttond = widgets.ButtonWidget(description='down')
buttond.on_click(a.decr)
display(button)
display(buttond)
Czy chcesz mieć jeden dział z jedną linią, który aktualizuje pojedynczą linię, gdy przyciski są wciśnięte? A może chcesz drukować z potencjalnie wieloma liniami, który dodaje nowe linie po naciśnięciu przycisków? – bigreddot
Obaj przypuszczam. Wybierzmy pierwszy. Najważniejsze, że chcę jednej działki niewiele. – mathtick
Kanoniczny sposób na to obejmuje serwer bokeh. Zatrzymujesz źródło danych dla działki, a następnie aktualizujesz je i przekazujesz do serwera, a wykres aktualizuje się automatycznie. Oto przykład: https://github.com/ContinuumIO/bokeh/blob/master/examples/plotting/notebook/animated.ipynb To powiedziawszy, myślę, że byłoby możliwe dodanie funkcji, która rysuje wykres w notesie IPython, ale nie sądzę, że jest to obecnie możliwe w jakikolwiek prosty sposób. – bigreddot