要制作一个动态更新的数据图表,我们可以使用Bokeh的ColumnDataSource
和stream
方法来动态更新数据。
首先,我们需要创建一个ColumnDataSource
对象来存储数据。然后,我们可以使用Bokeh的绘图工具创建一个图表,并将ColumnDataSource
传递给该图表。接下来,我们可以使用stream
方法来动态更新数据。以下是一个简单的示例代码:
from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource
from bokeh.layouts import column
import numpy as np
# 创建一个ColumnDataSource对象
source = ColumnDataSource(data=dict(x=[], y=[]))
# 创建一个图表
plot = figure(plot_height=400, plot_width=800, title="Dynamic Data Plot")
plot.line('x', 'y', source=source, line_width=2)
# 创建一个更新数据的回调函数
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))
# 添加周期性回调函数
curdoc().add_periodic_callback(update_data, 1000)
在这个示例中,我们首先创建了一个空的ColumnDataSource
对象来存储数据。然后,我们创建了一个简单的折线图表,并将ColumnDataSource
传递给该图表。接着,我们定义了一个update_data
函数,该函数生成新的数据并通过stream
方法动态更新数据。最后,我们将图表添加到文档,并使用add_periodic_callback
方法来定时更新数据。
运行该代码,你将会看到一个动态更新的数据图表。每秒钟,图表将自动更新一次数据。