MST
星途 面试题库

面试题:Python中Bokeh实现动态数据可视化基础

在Python的Bokeh库中,如何创建一个简单的动态折线图,展示实时更新的随机数据?请描述关键步骤并给出主要代码片段。
45.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

关键步骤:

  1. 安装必要库:确保安装了bokehnumpy库。如果没有安装,可以使用pip install bokeh numpy进行安装。
  2. 导入所需模块:从bokeh.plotting导入figureshowcurdoc,从bokeh.models导入ColumnDataSource,从bokeh.driving导入count,导入numpy用于生成随机数据。
  3. 创建数据源:使用ColumnDataSource创建一个数据源对象,初始化时可以设置初始数据。
  4. 创建图表:使用figure创建一个折线图对象,设置图表的标题、坐标轴标签等属性。
  5. 添加折线:在图表对象上使用数据源添加折线。
  6. 定义更新函数:通过@count装饰器定义一个更新函数,在函数中生成新的随机数据并更新数据源。
  7. 将图表添加到文档并设置周期性回调:将图表添加到当前文档curdoc(),并使用curdoc().add_periodic_callback设置更新函数的调用周期。

主要代码片段:

from bokeh.plotting import figure, show, curdoc
from bokeh.models import ColumnDataSource
from bokeh.driving import count
import numpy as np

# 创建数据源
source = ColumnDataSource(data=dict(x=[], y=[]))

# 创建图表
p = figure(title='实时动态折线图', x_axis_label='X', y_axis_label='Y')
p.line('x', 'y', source=source)

# 定义更新函数
@count()
def update(t):
    new_x = [t]
    new_y = [np.random.randint(0, 10)]
    source.stream(dict(x=new_x, y=new_y))

# 将图表添加到文档并设置周期性回调
curdoc().add_root(p)
curdoc().add_periodic_callback(update, 1000)