使用Bokeh构建交互式数据可视化应用
Bokeh是一个Python库,用于在现代Web浏览器中构建交互式数据可视化应用。 其目标是提供灵活性和强大的现代化可视化功能,同时仍然保持相对简单、容易使用和适合Python的风格。 Bokeh与Jupyter笔记本,Python脚本和命令行界面集成良好,并且可以建立在开放的Web标准之上,提供对现代Web浏览器的广泛支持。
为何使用Bokeh
在数据科学领域中,可视化是一个非常重要的方面。可视化有助于帮助理解数据,同时它也是与数据进行交互和传达模型的有效方式。 在过去的几年中,Python已经成为数据科学家的默认选择,特别是在机器学习领域。因此,Python的数据科学生态系统中出现了许多库,用于可视化数据,例如Matplotlib,Seaborn等。 但是,这些库的问题在于它们不太适合用于交互式可视化。
Bokeh的优势在于它使用现代Web技术(如HTML,CSS和JavaScript)构建交互式可视化,并带有许多适用于数据科学操作的内置工具(如缩放,旋转和悬停)。它还支持许多外部库和平台,例如Pandas,Jupyter笔记本和Flask框架,从而使其成为数据科学生态系统中的非常有价值的组件。
安装Bokeh
Bokeh可以使用pip安装。
pip install bokeh
创建一个简单的交互式可视化
现在让我们看一个简单的交互式可视化例子,它显示正弦和余弦函数。我们可以使用Bokeh绘图API和ColumnDataSource来绘制这两个函数及其标签。
from bokeh.plotting import figure, output_file, show
import numpy as np
x = np.linspace(0, 2 * np.pi, 200)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 准备数据
source = ColumnDataSource(data=dict(x=x, y_sin=y_sin, y_cos=y_cos))
# 创建绘图
p = figure(title="Sin and Cos curves")
# 将正弦函数添加到图形中
p.line('x', 'y_sin', source=source, line_color="red", legend_label="Sin")
# 将余弦函数添加到图形中
p.line('x', 'y_cos', source=source, line_color="blue", legend_label="Cos")
# 添加悬停工具
p.add_tools(HoverTool(tooltips=[("x", "$x"), ("y", "$y")]))
# 显示图形
show(p)
在这里,我们使用Bokeh的plotting模块来创建具有标题的空图形:’Sin and Cos curves’。我们设置数据源为ColumnDataSource,该数据源由我们创建的包含x,y_sin和y_cos数据的字典形式的数据表示。
在这里,我们使用两个线来绘制正弦函数和余弦函数。p.line('x','y_sin',source = source,line_color ='red',legend_label ='Sin')添加正弦函数线,并将其设置为红色。类似地,我们绘制余弦函数线。注意legend_label参数用于添加一个说明标签,用于解释图例中重要的线。
我们使用添加工具集中的悬停工具,以支持悬停数据点时的工具提示。这些提示会显示该点的x和y值。
最后,我们通过调用show(p)函数来显示图形。这将在浏览器中打开一个新标签,显示由我们刚刚创建的图形。
基本交互
Bokeh提供三种基本交互功能:Brush(刷子),Box Select(框选择)和Lasso Select(套索选择)。
Brush(刷子)和Box Select(框选择)用于选择子集。Brush使用鼠标移动以进一步选择数据,而Box Select使用鼠标拖动形成一个框来选择数据。类似于Box Select的Lasso Select(套索选择)使用一个不规则的形状,该形状围绕所需数据点并选择该点。这就是你需要设置源数据的区域选择范围并定义一个函数来处理选择范围的地方。
结论
通过本文,我们学习了如何使用Bokeh构建交互式数据可视化应用。我们还了解了Bokeh的优点以及为什么应该使用Bokeh。我们还学习了如何创建一个简单的交互式可视化,这是使用Bokeh生成可视化的良好起点。
总之,Bokeh广泛支持Python的数据科学生态系统,并提供针对在Web上构建交互式可视化所需的工具和功能。Bokeh的API易于使用,使得可视化代码易于维护。因此,Bokeh是一种实现交互式数据可视化的非常好的选择。