散景-子类图

时间:2019-02-07 16:23:15

标签: python bokeh

这是一个简单的bokeh'quickstart'示例:

from bokeh.plotting  import Figure

output_file("lines.html")
xs = [1, 2, 3, 4, 5]
ys = [6, 7, 2, 4, 5]

p = Figure()
p.line(xs, ys, legend="Temp.", line_width=2)

show(p)

这有效。 现在,如果我将Figure子类化,该脚本仍然可以正常运行并生成html页面,但浏览器将仅显示空白页面:

from bokeh.plotting  import Figure

class TestFigure(Figure):
    def __init__(self):
        super().__init__()    

output_file("lines.html")

xs = [1, 2, 3, 4, 5]
ys = [6, 7, 2, 4, 5]

p = TestFigure()
p.line(xs, ys, legend="Temp.", line_width=2)

show(p)

那是故意的吗?

1 个答案:

答案 0 :(得分:1)

Bokeh类经过高度检测,以促进Python和JavaScript之间的自动序列化和同步。特别是,每个Bokeh类实际上都有两个部分,一个在Python中,另一个在JavaScript中。如果您是Python的子类,则必须提供相应的JavaScript实现。因此,仅在Python端子类化是不够的,您将需要create an entire custom extension。除非您实际上是在利用自定义扩展程序可以提供的功能,否则可能不值得这样做。

TLDR:散景类通常不应该被子类化,除非要进行自定义(JavaScript)扩展。