在Django视图中嵌入交互式Bokeh

18

我想在Django视图(或模型中)创建交互式绘图。比如,我想使用selection_histogram示例

我认为Bokeh适合我的需求,因为我可以重用Matplotlib / Seaborn,并且我不太擅长JavaScript。

对于我来说,遵循此示例:如何将独立的Bokeh图表嵌入到Django模板中没有任何问题。

据我所知,我需要运行Bokeh服务器并使用Nginx进行代理设置

如何将交互式Bokeh绘图嵌入到Django视图中?

我尝试了以下操作:

启动Bokeh服务器

bokeh serve --allow-websocket-origin=127.0.0.1:8001 selection_histogram.py

更新views.py中的视图

def simple_chart(request):

    script = autoload_server(model=None,
                             app_path="/selection_histogram",
                             url="http://localhost:5006/")


    return render(request, "simple_chart.html", {"the_script": script})

现在,它如预期般互动。

是否有一种方法可以将一些参数传递给 bokeh 应用程序?

任何帮助都将不胜感激。敬礼


只是为了澄清您的问题,您是否希望在Django模板中呈现小部件或表单输入,然后让它们与Bokeh服务器通信(例如更改绘图的比例或数据值)?如果是这样,那么这类似于我遇到的问题,我认为解决方案在bokeh.js中,但我还没有找到一个好的模式。 - Brad Montgomery
1
你好,我在 Gitter 上看到了你的活动。我成功地使用 Django 数据集渲染了一个 Bokeh 小部件。我的问题是如何让两个服务器彼此通信。 - Thomas PEDOT
你能解释一下什么是交互式吗:
  1. 工具应该可以使用(缩放,平移,悬停等),或者
  2. 数据和图表应该即使没有新的页面请求也能更新。
- renzop
我的原始问题是关于客户端服务器交互性,就像示例中一样。每当用户在图表中选择数据时,服务器端会进行一些计算,并将更新后的结果回调给客户端。 - Thomas PEDOT
你能否发布一下你简化后的代码,展示如何在Django视图中嵌入Bokeh服务器(以便可以在Bokeh小部件上使用回调函数)? - Hossein Kalbasi
1个回答

8

你不需要运行Bokeh服务器来在DJANGO中使用Bokeh。只需将Bokeh导入您的views.py。

您需要在模板中加载Bokeh js和css,并呈现Bokeh创建的组件。我认为这个是一个简洁的例子。


1
谢谢你的回答。这个例子和我在问题中提到的一样。这个简单的例子是“静态的”。我可以像使用matplolib那样做。我会编辑我的问题以更具体地说明。 - Thomas PEDOT
好的,那么我不明白需要bokeh服务器哪种交互性 :) - DA--

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接