散景在GridPlot中覆盖多个绘图对象

gre*_*ole 4 python bokeh

假设我有一个包含一些数据的类,并实现了一个返回散景图的函数

import bokeh.plotting as bk
class Data():
    def plot(self,**kwargs):
        # do something to retrieve data
        return bk.line(**kwargs)
Run Code Online (Sandbox Code Playgroud)

现在我可以实例化多个这些Data对象exps,sets并创建单独的图.如果bk.hold()设置了它们,最终会以一个数字结尾(这基本上就是我想要的).

bk.output_notebook()
bk.figure()
bk.hold()
exps.scatter(arg1)
sets.plot(arg2)
bk.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在我希望将这些图聚合成一个GridPlot()我可以为非覆盖的单个图进行聚合

bk.figure()
bk.hold(False)
g=bk.GridPlot(children=[[sets.plot(arg3),sets.plot(arg4)]])
bk.show(g)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但我不知道如何覆盖我之前作为exps.scatter的散点图.

有没有办法获得对当前活动数字的引用,如:

rows=[]
exps.scatter(arg1)
sets.plot(arg2)
af = bk.get_reference_to_figure()
rows.append(af) # append the active figure to rows list
bg.figure()     # reset figure

gp = bk.GridPlot(children=[rows])
bk.show(gp)
Run Code Online (Sandbox Code Playgroud)

big*_*dot 5

从Bokeh 0.7开始,plotting.py界面已经变得更加明确,希望这会使这样的事情变得更简单,更清晰.基本的变化是figure现在返回一个对象,所以你可以直接对这些对象进行操作,而不必想知道"当前活动"的图是什么:

p1 = figure(...)
p1.line(...)
p1.circle(...)

p2 = figure(...)
p2.rect(...)

gp = gridplot([p1, p2])
show(gp)
Run Code Online (Sandbox Code Playgroud)

几乎所有的以前的代码应该适用于现在,但是hold,curplot等被弃用(并出具废弃警告,如果您用废弃警告蟒蛇启用),并会在将来的版本中删除.