溫馨提示×

使用Bokeh,如何制作一個(gè)動態(tài)更新的數(shù)據(jù)圖表

小樊
93
2024-05-20 11:01:35
欄目: 編程語言

要制作一個(gè)動態(tài)更新的數(shù)據(jù)圖表,我們可以使用Bokeh的ColumnDataSourcestream方法來動態(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ù)。

0