gpt4 book ai didi

python - 在 Django 中使用交互式控件制作 Bokeh 图

转载 作者:太空狗 更新时间:2023-10-29 20:30:27 27 4
gpt4 key购买 nike

我有一个最终使用嵌入式 Bokeh 可视化的 Django 应用程序。

现在我使用 bokeh.embed.components 函数和一个模板,例如:

<body>
{{the_div|safe}}

{{the_script|safe}}
</body>

感谢this stackoverflow question .

问题是,现在我需要创建更具交互性的可视化效果,添加 slider 、复选框和其他控件。

This example看起来像我想要的,除了几个问题:

  1. 我不知道如何在 Django 中嵌入那种对象。我会说 this是要走的路,但也许不是。
  2. 我对必须为此使用 Bokeh 服务器感到有点困惑。有没有简单易用的纯javascript解决方案?

总而言之,我想知道使用 django 和 bokeh 创建动态图表交互的标准方法是什么。

最佳答案

有两个用例:


没有服务器

如果您可以在 JS 中执行任何更新(不需要调用实际的 python 代码),那么使用 CustomJS callbacks 添加交互非常容易.该链接中有很多示例,但基本的简单代码示例如下所示:

from bokeh.io import vform
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import Figure, output_file, show

output_file("callback.html")

x = [x*0.005 for x in range(0, 200)]
y = x

source = ColumnDataSource(data=dict(x=x, y=y))

plot = Figure(plot_width=400, plot_height=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)

callback = CustomJS(args=dict(source=source), code="""
var data = source.get('data');
var f = cb_obj.get('value')
x = data['x']
y = data['y']
for (i = 0; i < x.length; i++) {
y[i] = Math.pow(x[i], f)
}
source.trigger('change');
""")

slider = Slider(start=0.1, end=4, value=1, step=.1,
title="power", callback=callback)

layout = vform(slider, plot)

show(layout)

这将创建一个带有 Bokeh 图和 slider 的独立 HTML 文档,该文档会根据 slider 更新图,而无需服务器(即您可以通过电子邮件将其发送给某人或在静态页面上提供它,并且它会起作用)。


有服务器

如果您希望小部件、交互等驱动实际的 python 代码(例如 scikit-learn 或 Pandas),那么您需要使用 Bokeh 服务器。令人高兴的是,0.11 版本的新服务器更加健壮、高效、可扩展且易于使用。您可以在此处看到几个实时部署的 Bokeh 应用程序(带有指向其源代码的链接):

http://demo.bokeh.org/

以及此处文档中有关各种部署的大量文档:

http://docs.bokeh.org/en/0.11.1/docs/user_guide/server.html

关于python - 在 Django 中使用交互式控件制作 Bokeh 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31585777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com