我是Bokeh和Python的新手,這也是我的第一個Stack Overflow問題。使用散景循環動畫
我正在使用散景來繪製散佈在大腦中的粒子的軌跡輪廓,但要讓它具有動畫效果。我已經能夠成功地創建一個繪製點的程序,但是一旦繪製了所有點,它就會停止。我希望能夠循環動畫,以便一旦所有點都被繪製出來,它就會自行清除並重新開始。
我對編碼術語還很陌生,而且我無法找到能做到這一點的事情。我認爲我在if語句中使用重置函數導入了正確的軌道,但它似乎不起作用。我已經看着下面還有供參考:
How to animate a circle using bokeh bokeh.pydata.org/en/0.10.0/docs/reference/resources_embedding.html#bokeh-state
這裏是我到目前爲止的代碼繪製一個隨機的軌跡:
import numpy as np
from bokeh.plotting import figure, show, gridplot, vplot, hplot, curdoc
from bokeh.io import output_notebook
from bokeh.client import push_session
from bokeh.core.state import State as new
# This is where the actual coding begins.
b = np.random.rand(300, 3)
xlist = b[:, 1]
ylist = b[:, 2]
# create a plot and style its properties. Change chart title here.
p = figure(title='PEG_PLGA15k_F68_R2_P81', title_text_font_size='13pt',
x_range=(min(xlist), max(xlist)), y_range=(min(ylist), max(ylist)),)
# add a text renderer to out plot (no data yet)
r = p.line(x=[], y=[], line_width=3, color='navy')
session = push_session(curdoc())
i = 0
ds = r.data_source
# create a callback that will add a number in a random location
def callback():
global i
ds.data['x'].append(xlist[i])
ds.data['y'].append(ylist[i])
ds.trigger('data', ds.data, ds.data)
if i < xlist.shape[0] - 1:
i = i + 1
else:
new.reset()
# Adds a new data point every 67 ms. Change at user's discretion.
curdoc().add_periodic_callback(callback, 67)
session.show()
session.loop_until_closed()
從session.show()中缺少'p',所以正確的函數調用是'session.show(p)',否則不顯示圖 – ragesz