gpt4 book ai didi

bokeh - curdoc() 的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 20:28:31 24 4
gpt4 key购买 nike

我玩 Bokeh 已经有一段时间了,现在我想创建交互式绘图并将它们在线嵌入(例如,在 WordPress 帖子中)。

然而,即使我花了一些时间审查和测试 Bokeh 网站示例中的代码,我也很难理解 curdoc() 的确切用途。为了创建带有小部件的 Bokeh 应用程序似乎是必要的,但是从我在资源中找到的内容来看,我不太了解它。

最佳答案

一些术语是有序的。当您创建 Bokeh 图时,它由许多较小的对象组成,例如字形、范围、数据源、工具等。图本身基本上是所有这些其他对象的容器。所有这些对象,包括绘图,都称为模型。其他模型是布局之类的东西(例如 rowcolumn )以及 Bokeh 内置的小部件(例如 SliderSelect )。

对于 Python 端的这些模型中的每一个,都有一个相应的 JavaScript 对象来实际实现该模型,并在浏览器中完成所有用于绘图或交互的工作。 Bokeh 的工作方式是它可以自动将一组 Python 模型转换为一堆 JSON,然后 BokehJS 可以从中重构所有相应的 JS 对象。

文档是 Bokeh 模型的集合。它是最小的“序列化单元”。也就是说,将单个 Python 模型转换为 JSON(如 Plot )通常没有意义,因为该对象可能引用许多其他对象(如轴或字形等)。 Bokeh 文档中的模型都可以以一种有意义的方式一起转换为 JSON。

无论您是制作独立文档(例如使用 output_file ),还是在 Bokeh 服务器上创建 Bokeh 应用程序,上述所有内容都适用。对于 Bokeh 应用程序,应用程序代码本身实际上只是修改文档的秘诀。因此,每当创建 Bokeh 应用 session 时(即,每当用户打开 Bokeh 服务器上的 Bokeh 应用的 URL 时),一个新的空白 Document为其创建,并运行应用程序代码,其中新的 Document该 session 可用 curdoc() .然后应用程序代码可以向该文档添加内容(例如,使用 curdoc().add_root(...) 并且一旦应用程序代码完成,“完成的”文档就会转换为 JSON 并发送到 BokehJS 以显示给用户。

最后一点要提到的是,Bokeh 服务器的主要目的是确保以这种方式创建的 Bokeh 文档与用户在浏览器中的 View 自动保持同步。如果用户滑动 slider ,则会更新 Slider浏览器中 JS 文档中的模型,它也会自动更新 Bokeh 服务器中 Python 文档中的 python Slider 对象。应用程序可以对此做出响应,并进行其他更改(例如更新 Python 数据源),这会导致 JS 数据源也更新(从而使绘图发生更改)。这种自动双向同步为 Bokeh 服务器提供了所有复杂的交互功能。

关于bokeh - curdoc() 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40558417/

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