📜  Bokeh-使用JavaScript开发(1)

📅  最后修改于: 2023-12-03 14:59:32.180000             🧑  作者: Mango

Bokeh-使用JavaScript开发

Bokeh是一个用于Web浏览器上交互式数据可视化的Python库,它使用JavaScript实现,并支持现代网络浏览器中的大部分常见场景。

特点

Bokeh的主要特点包括:

  • 可交互性:使用Bokeh可轻松创建可交互的控件和动画。
  • 无浏览器插件:Bokeh使用HTML和JavaScript实现,因此不需要安装任何浏览器插件。
  • 适用于大规模数据:Bokeh支持显示大规模数据集,通过使用WebGL等现代动态图形技术避免了浏览器的限制。
  • 与Jupyter Notebook集成:Bokeh是一个Jupyter Notebook扩展,可以在Notebook中直接使用。
安装

使用pip安装最新版本的Bokeh:

pip install bokeh
快速上手

以下是一个简单的Bokeh示例程序:

from bokeh.plotting import figure, output_file, show

# 创建图形对象
p = figure(title="简单散点图", x_axis_label='x', y_axis_label='y')

# 添加散点图数据
p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20)

# 输出到HTML文件中
output_file("scatter.html")

# 展示图形
show(p)

上面的代码创建了一个简单的散点图,并将结果输出到名为scatter.html的HTML文件中。运行该程序后,可以在浏览器中打开scatter.html文件查看到结果。

可视化组件

Bokeh支持许多可视化组件,包括散点图、折线图、柱状图等。我们可以用类似下面的代码创建一个折线图:

from bokeh.plotting import figure, output_file, show

# 创建图形对象
p = figure(title="简单折线图", x_axis_label='x', y_axis_label='y')

# 添加数据
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# 添加折线
p.line(x, y, line_width=2)

# 输出到HTML文件中
output_file("line.html")

# 展示图形
show(p)
可交互性

Bokeh支持可交互的控件和动画。例如,我们可以像下面的代码一样创建一个可以调整数据的滑块:

from bokeh.layouts import column
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import figure, output_file, show

# 创建图形对象和数据源
p = figure(title="简单折线图", x_axis_label='x', y_axis_label='y')
source = ColumnDataSource(data=dict(x=[1, 2, 3, 4, 5], y=[6, 7, 2, 4, 5]))

# 添加折线
p.line('x', 'y', source=source, line_width=2)

# 创建滑块
slider = Slider(start=0.1, end=4, value=1, step=.1, title="scale")

# 添加JavaScript回调函数
callback = CustomJS(args=dict(source=source, slider=slider), code="""
    const data = source.data;
    const f = slider.value
    const x = data['x']
    const y = data['y']
    for (var i = 0; i < x.length; i++) {
        y[i] = Math.pow(x[i], f)
    }
    source.change.emit();
""")

# 将滑块的回调函数添加到JS中
slider.js_on_change('value', callback)

# 输出到HTML文件中
output_file("slider.html")

# 展示图形和滑块
show(column(p, slider))

该程序创建了一个折线图和一个滑块用于调整数据的幂次方。运行该程序并打开生成的slider.html文件,可以使用滑块调整幂次方来观察数据的变化。

结论

Bokeh是一个功能强大的Python库,可以用于Web浏览器上的交互式数据可视化。本文提供了Bokeh的基础知识和代码示例,希望对读者有所帮助。