📜  Bokeh-入门(1)

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

Bokeh-入门

简介

Bokeh是一个用Python编写的交互式数据可视化库,支持现代Web浏览器,旨在为数据科学家和其他Python用户提供一种吸引人且易于使用的方式来创建交互式可视化。它支持多种图表类型,包括折线图、散点图、柱状图、热图、图表组合等。 Bokeh还能帮助我们轻松地创建交互式控件,从而使用户能够自定义图表的外观,更进一步探索数据。

安装

在安装Bokeh之前,我们需要先安装Python和pip。然后在命令行输入以下指令即可安装Bokeh:

pip install bokeh
快速开始

在Python的交互式环境中,我们可以运行以下代码块来生成一条简单的折线图:

from bokeh.plotting import figure, output_file, show

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

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

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

# 保存图形到本地HTML文件
output_file("line.html")

# 显示图形
show(p)

执行上述代码,将会在浏览器中打开一个交互式可视化页面,页面上将展示我们创建的折线图。

图形优化

我们可以通过添加数据,将折线图升级成更复杂的图形。除此之外,我们还可以添加图例、调整坐标轴范围、更改线条颜色等等。

from bokeh.models import ColumnDataSource

# 准备数据
x = [1, 2, 3, 4, 5]
y1 = [6, 7, 2, 4, 5]
y2 = [2, 3, 4, 1, 2]

# 创建一个ColumnDataSource
source = ColumnDataSource(data={
    'x': x,
    'y1': y1,
    'y2': y2
})

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

# 添加折线
p.line('x', 'y1', source=source, legend_label='折线1', line_width=2, line_color='red')
p.line('x', 'y2', source=source, legend_label='折线2', line_width=2, line_color='green')

# 添加图例
p.legend.title = '图例'
p.legend.location = "top_left"

# 调整坐标轴范围
p.x_range.start = 0
p.x_range.end = 6
p.y_range.start = 0
p.y_range.end = 10

# 保存图形到本地HTML文件
output_file("line.html")

# 显示图形
show(p)
交互式控件

Bokeh可以让我们创建各种交互式控件,例如下拉菜单、滑块、复选框等等。我们可以根据用户的选择,调整图形的外观甚至更改数据。以下是一个例子,我们通过选择不同的数据集,切换图形类型。

from bokeh.layouts import column
from bokeh.models import CustomJS, Select
from bokeh.palettes import Spectral4

# 准备数据
data = {
    'sin': [0.1, 0.2, 0.3, 0.4, 0.5],
    'cos': [0.5, 0.4, 0.3, 0.2, 0.1],
    'tan': [0.3, 0.6, 0.9, 1.2, 1.5],
}

# 创建一个ColumnDataSource
source = ColumnDataSource(data={
    'x': [1, 2, 3, 4, 5],
    'y': data['sin']
})

# 创建一个figure对象
p = figure(title="折线图", x_axis_label='x', y_axis_label='y')
line = p.line('x', 'y', source=source, line_width=2, line_color=Spectral4[0])

# 创建一个下拉框
select = Select(title='数据集', value='sin', options=['sin', 'cos', 'tan'])

# 定义回调函数
callback = CustomJS(args=dict(source=source, line=line), code="""
    var data = source.data;
    var y = data[cb_obj.value];
    line.data_source.data['y'] = y;
    source.change.emit();
""")

# 绑定回调函数
select.js_on_change('value', callback)

# 创建一个Column布局
layout = column(select, p)

# 保存图形到本地HTML文件
output_file("line.html")

# 显示图形
show(layout)
结束语

Bokeh是一个非常实用且强大的数据可视化库,它可以帮助我们轻松地创建交互式可视化,并通过交互式控件提供更好的数据探索体验。在使用Bokeh时,我们应该熟悉基本图标的创建方法,并学会调整图形的外观和功能,以满足我们的需求。