在Python中使用Bokeh绘制动态图表
发布时间:2023-12-23 04:03:00
在Python中使用Bokeh库绘制动态图表是一种简单而强大的方式来展示数据的变化。Bokeh是一个交互式可视化库,可以创建各种类型的图表,包括折线图、散点图、柱状图等。使用Bokeh绘制动态图表的过程包括创建数据集、创建图表对象和显示数据。下面是一个使用Bokeh绘制动态折线图的示例。
首先,我们需要导入必要的库:
from bokeh.plotting import figure, output_file, show from bokeh.models import ColumnDataSource, LinearAxis, Range1d from bokeh.io import curdoc from bokeh.layouts import column from random import randint from time import sleep
然后,我们创建一个数据集,包含x和y坐标的列表。这个列表可以是需要展示的任何数据,例如温度、股票价格或传感器读数。
x = [0] y = [0]
接下来,我们需要创建一个图表对象。在这个示例中,我们使用figure()函数创建一个折线图,并设置标题、x和y轴标签。
plot = figure(title="Dynamic Line Graph", x_axis_label='X', y_axis_label='Y')
然后,我们将数据添加到图表对象中,并创建一个数据源对象。
source = ColumnDataSource(data=dict(x=x, y=y))
plot.line('x', 'y', source=source, line_width=2)
接下来,我们定义一个更新函数,用于更新数据。在这个示例中,我们将随机生成一个新的数据点,并将其附加到数据集中。
def update():
new_x = source.data['x'][-1] + 1
new_y = source.data['y'][-1] + randint(-5, 5)
source.stream(dict(x=[new_x], y=[new_y]))
最后,我们使用curdoc().add_periodic_callback()函数来定期调用更新函数。
curdoc().add_periodic_callback(update, 1000) #每隔1秒钟执行一次更新函数
最后,我们使用show()函数将图表对象显示在浏览器中。
show(plot)
完整的代码如下所示:
from bokeh.plotting import figure, output_file, show
from bokeh.models import ColumnDataSource, LinearAxis, Range1d
from bokeh.io import curdoc
from bokeh.layouts import column
from random import randint
from time import sleep
x = [0]
y = [0]
plot = figure(title="Dynamic Line Graph", x_axis_label='X', y_axis_label='Y')
source = ColumnDataSource(data=dict(x=x, y=y))
plot.line('x', 'y', source=source, line_width=2)
def update():
new_x = source.data['x'][-1] + 1
new_y = source.data['y'][-1] + randint(-5, 5)
source.stream(dict(x=[new_x], y=[new_y]))
curdoc().add_periodic_callback(update, 1000)
show(plot)
运行以上代码,将会在浏览器中显示一个动态折线图,每隔1秒钟更新一次数据点。您可以根据自己的需求修改更新函数,以便通过不同的方式生成新的数据点。
使用Bokeh绘制动态图表是一种简单而强大的方式来展示数据的变化。Bokeh提供了许多其他类型的图表,以及更多的交互功能,例如缩放、平移和选择。您可以参考Bokeh的官方文档,了解更多关于Bokeh的功能和用法。
