假设我有一个包含一些数据的类,并实现了一个返回散景图的函数
import bokeh.plotting as bk
class Data():
def plot(self,**kwargs):
# do something to retrieve data
return bk.line(**kwargs)
现在,我可以实例化多个这些数据对象,例如exps
和sets
,并创建单独的图。如果设置了bk.hold()
,他们将会以一个数字结尾(这基本上就是我想要的)。
bk.output_notebook()
bk.figure()
bk.hold()
exps.scatter(arg1)
sets.plot(arg2)
bk.show()
现在我希望将这些图聚合成GridPlot()
我可以为非覆盖的单个图块做
bk.figure()
bk.hold(False)
g=bk.GridPlot(children=[[sets.plot(arg3),sets.plot(arg4)]])
bk.show(g)
但我不知道如何覆盖我之前作为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)
答案 0 :(得分:5)
从Bokeh 0.7开始,plotting.py
界面已被更改为更明确,希望这会使这样的事情变得更简单,更清晰。基本的变化是figure
现在返回一个对象,所以你可以直接对这些对象进行操作,而不必想知道“当前活动”的情节是什么:
p1 = figure(...)
p1.line(...)
p1.circle(...)
p2 = figure(...)
p2.rect(...)
gp = gridplot([p1, p2])
show(gp)
几乎所有以前的代码现在都可以使用,但是不推荐使用hold
,curplot
等(如果你运行python并启用了弃用警告,则会发出弃用警告),并且将来会被删除发布。
答案 1 :(得分:2)
显然,bk.curplot()
可以解决问题
exps.scatter(arg1)
sets.plot(arg2)
p1 = bk.curplot()
bg.figure() # reset figure
exps.scatter(arg3)
sets.plot(arg4)
p2 = bk.curplot()
gp = bk.GridPlot(children=[[p1,p2])
bk.show(gp)