要制作一個(gè)動態(tài)更新的數(shù)據(jù)圖表,我們可以使用Bokeh的ColumnDataSource
和stream
方法來動態(tài)更新數(shù)據(jù)。
首先,我們需要創(chuàng)建一個(gè)ColumnDataSource
對象來存儲數(shù)據(jù)。然后,我們可以使用Bokeh的繪圖工具創(chuàng)建一個(gè)圖表,并將ColumnDataSource
傳遞給該圖表。接下來,我們可以使用stream
方法來動態(tài)更新數(shù)據(jù)。以下是一個(gè)簡單的示例代碼:
from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource
from bokeh.layouts import column
import numpy as np
# 創(chuàng)建一個(gè)ColumnDataSource對象
source = ColumnDataSource(data=dict(x=[], y=[]))
# 創(chuàng)建一個(gè)圖表
plot = figure(plot_height=400, plot_width=800, title="Dynamic Data Plot")
plot.line('x', 'y', source=source, line_width=2)
# 創(chuàng)建一個(gè)更新數(shù)據(jù)的回調(diào)函數(shù)
def update_data():
new_data = dict(x=[1, 2, 3, 4, 5], y=np.random.randint(0, 10, 5))
source.stream(new_data, rollover=10)
# 添加圖表到文檔
curdoc().add_root(column(plot))
# 添加周期性回調(diào)函數(shù)
curdoc().add_periodic_callback(update_data, 1000)
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)空的ColumnDataSource
對象來存儲數(shù)據(jù)。然后,我們創(chuàng)建了一個(gè)簡單的折線圖表,并將ColumnDataSource
傳遞給該圖表。接著,我們定義了一個(gè)update_data
函數(shù),該函數(shù)生成新的數(shù)據(jù)并通過stream
方法動態(tài)更新數(shù)據(jù)。最后,我們將圖表添加到文檔,并使用add_periodic_callback
方法來定時(shí)更新數(shù)據(jù)。
運(yùn)行該代碼,你將會看到一個(gè)動態(tài)更新的數(shù)據(jù)圖表。每秒鐘,圖表將自動更新一次數(shù)據(jù)。