首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:和Bokeh

ValueError:和Bokeh
EN

Stack Overflow用户
提问于 2019-07-09 18:57:01
回答 1查看 1.1K关注 0票数 1

下面是一个重新生成错误的完整代码示例。在以前的Bokeh版本中,我能够做到这一点,但是在升级了这段代码之后,不再允许我向GridBox添加一个div。

代码语言:javascript
复制
from bokeh.models import Panel, Tabs
from bokeh.io import output_file, show
from bokeh.plotting import figure
from bokeh.io import curdoc
from bokeh.models.widgets import Div
from bokeh.layouts import gridplot


p1 = figure(plot_width=300, plot_height=300)
p1.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)

p2 = figure(plot_width=300, plot_height=300)
p2.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)

p3 = figure(plot_width=300, plot_height=300)
p3.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)

p4 = figure(plot_width=300, plot_height=300)
p4.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)

g1 = gridplot([p1, p2, p3, p4], ncols=2, plot_width=800, plot_height=600)

tab1 = Panel(child=g1, title="circle")

tabs = Tabs(tabs=[ tab1 ])

doc = curdoc()
doc.add_root(tabs)

my_div = Div(text="Please wait...")

doc._roots[0].tabs[0].child.children[1].children.append(my_div)

这是我收到的错误信息,

ValueError:期望列表的一个元素(Tuple(实例(LayoutDOM),Int,Int),Tuple(实例(LayoutDOM),Int,Int)),获得带有无效项Div的seq (id=‘2515’,.)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 19:25:54

首先要注意几个问题:

  • 请,请,请始终提供所有相关信息。在这种情况下,您对网格的评论使我误入歧途,只考虑了gridplot API。如果您在异常中包含了行号/更多上下文,那么您的问题将于昨天得到回答。
  • 你绝对不应该在doc._roots周围乱搞。由于某种原因,它被标记为“私有”,并且可以在任何时候更改名称或删除,无需警告。(这就是私人的意思,没有任何保证)。您有一个对您创建的Tabs对象的引用,您应该直接更新它。

前一段时间对整个布局系统进行了一次非常大的大修。很多,很多错误和问题都被修复了。我们有数千个测试来维护版本兼容性,但是(很明显)这是一个偶然的API破坏。对于用户来说,直接使用GridPlot是不寻常的,这就是它被忽略的原因。children for GridPlot现在必须提供显式的网格坐标,如果查看GridPlot.children的内容,可以看到:

代码语言:javascript
复制
[(Figure(id='1852', ...), 0, 0),
 (Figure(id='1889', ...), 0, 1),
 (Figure(id='1926', ...), 1, 0),
 (Figure(id='1963', ...), 1, 1)]

它是包含显式网格位置的元组列表。

所以在你的例子中,你可能想:

代码语言:javascript
复制
tabs.tabs[0].child.children[1].children.append((my_div, 2, 0))

但是,我还要注意,您还可以将div附加到包含GridPlot的列中,这似乎更容易实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56959056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档