Bokeh Applets,嵌入和Bokeh服务器
在本文中,我们将介绍Bokeh Applets的概念,如何嵌入Bokeh图表和应用程序,并且如何使用Bokeh服务器来实现交互性。
阅读更多:Bokeh 教程
Bokeh简介
Bokeh是一个用于创建交互式数据可视化的Python库。它允许用户使用简单的Python语法创建漂亮的图表、仪表盘和应用程序。Bokeh的一个重要特点是可以将这些图表和应用程序以多种方式嵌入到不同的平台中。
Bokeh Applets
Bokeh Applets是一种嵌入式的Bokeh应用程序,可以在网页上展示。Bokeh Applets允许用户使用Bokeh创建交互式的数据可视化,并将其部署到互联网上,以供其他人访问。用户可以使用Python编写Bokeh Applets,并将其转换为HTML文件,然后将该文件部署到web服务器上。Bokeh Applets可以通过各种方式与其他Web技术进行集成,例如JavaScript、CSS和HTML。
例如,下面是一个简单的Bokeh Applet示例,它展示了一个图表和一个滑动条,用于调整图表的属性:
from bokeh.plotting import figure, output_file, show
from bokeh.models import Slider
from bokeh.layouts import column
from bokeh.io import curdoc
# 创建图表
plot = figure(title="Bokeh Applet 示例", sizing_mode="stretch_width", width=600, height=400)
# 创建滑动条
slider = Slider(title="调整属性", start=0, end=10, step=0.1, value=5)
# 监听滑动条变化的回调函数
def callback(attr, old, new):
plot.line([1, 2, 3, 4, 5], [new, new+1, new+2, new+3, new+4], line_width=2)
slider.on_change("value", callback)
# 创建布局
layout = column(slider, plot)
# 输出到HTML文件
output_file("bokeh_applet.html")
show(layout)
在上面的示例中,我们首先导入所需的Bokeh模块和类。然后,我们创建了一个名为plot
的图表对象,并设置了标题、大小、宽度和高度。接下来,我们创建了一个名为slider
的滑动条对象,并设置了标题、起始值、结束值、步长和初始值。然后,我们定义了一个名为callback
的回调函数,该函数将在滑动条的值改变时被调用,并根据新的值绘制一条线。最后,我们使用column
函数创建了一个布局,并使用output_file
函数将结果输出到HTML文件中。
在浏览器中打开bokeh_applet.html
文件,您将看到一个包含图表和滑动条的页面。通过移动滑动条,您可以改变图表的属性,从而实现交互性。
嵌入Bokeh图表和应用程序
除了使用Bokeh Applets,我们还可以将Bokeh图表和应用程序嵌入到其他平台中,例如Jupyter Notebook、Flask应用程序和Django网站。
在Jupyter Notebook中嵌入Bokeh图表非常简单。只需在Notebook中导入所需的Bokeh模块和类,创建图表对象,并使用show
函数将其显示在Notebook中即可。例如:
from bokeh.plotting import figure, output_notebook, show
# 创建图表
plot = figure()
# 绘制数据点
plot.circle([1, 2, 3, 4, 5], [2, 4, 1, 6, 3])
# 在Notebook中显示图表
output_notebook()
show(plot)
在Flask应用程序中嵌入Bokeh图表需要安装Flask-Bokeh扩展。安装完成后,您可以使用bokeh_embed
装饰器将Bokeh图表嵌入到Flask路由函数中。例如:
from flask import Flask, render_template
from flask_bokeh import FlaskBokeh
from bokeh.plotting import figure
app = Flask(__name__)
flask_bokeh = FlaskBokeh(app)
@app.route("/")
@flask_bokeh.bokeh_embed
def index():
# 创建图表
plot = figure()
# 绘制数据点
plot.circle([1, 2, 3, 4, 5], [2, 4, 1, 6, 3])
# 返回HTML模板,其中包含嵌入的Bokeh图表
return render_template("index.html", plot=plot)
if __name__ == "__main__":
app.run()
在Django网站中嵌入Bokeh图表需要使用Django-Bokeh扩展。安装完成后,您可以在Django视图函数中创建和返回Bokeh图表。例如:
from django.shortcuts import render
from bokeh.plotting import figure
def index(request):
# 创建图表
plot = figure()
# 绘制数据点
plot.circle([1, 2, 3, 4, 5], [2, 4, 1, 6, 3])
# 返回HTML模板,其中包含嵌入的Bokeh图表
return render(request, "index.html", {"plot": plot})
在上面的示例中,我们首先导入所需的模块和类。然后,我们创建了一个名为plot
的图表对象,并使用circle
方法在图表中绘制了一些数据点。最后,我们使用render_template
函数(在Flask中)或render
函数(在Django中)返回带有嵌入的Bokeh图表的HTML模板。
Bokeh服务器
Bokeh服务器是Bokeh的另一个强大功能,它允许用户在一个地方创建和托管交互式的数据可视化应用程序。Bokeh应用程序可以使用Bokeh服务器来实现动态更新和实时交互。
要创建一个Bokeh应用程序,您可以使用curdoc
函数获取当前的文档对象,并使用add_root
方法将图表、小部件和布局添加到文档中。然后,您可以使用bokeh serve
命令在命令行中启动Bokeh服务器,并指定应用程序的脚本文件。例如:
from bokeh.plotting import figure, curdoc
from bokeh.models import Slider
from bokeh.layouts import column
# 创建图表
plot = figure()
# 创建滑动条
slider = Slider(start=0, end=10, step=0.1, value=5)
# 监听滑动条变化的回调函数
def callback(attr, old, new):
plot.line([1, 2, 3, 4, 5], [new, new+1, new+2, new+3, new+4])
slider.on_change("value", callback)
# 添加到文档中
curdoc().add_root(column(slider, plot))
在命令行中运行以下命令以启动Bokeh服务器:
bokeh serve --show your_app.py
上面的命令将启动Bokeh服务器并自动打开浏览器,显示您的应用程序。在浏览器中,您将看到带有滑动条和图表的页面。通过移动滑动条,您可以动态更新图表,实现实时交互。
总结
本文介绍了Bokeh Applets的概念,它允许用户将交互式的数据可视化部署到互联网上。我们还学习了如何将Bokeh图表和应用程序嵌入到Jupyter Notebook、Flask应用程序和Django网站中。最后,我们介绍了Bokeh服务器的功能,它可以用于创建和托管交互式的数据可视化应用程序。通过学习这些内容,您可以利用Bokeh的强大功能创建出色的数据可视化,并将其集成到不同的平台中。