我一直在查看示例,文档和谷歌,我无法找到如何做到这一点的示例或解释......
我正在直接使用JavaScript库,当我在绘图中添加一个字形时,我只想指定一个应该显示该字形的顺序。我有意图重叠的字形,我需要指定其中一个在顶部。我相信我可以使用figure.renderers
获取所有渲染器的列表,并手动对其进行排序,但这看起来非常简陋和粗糙......
我尝试使用level
参数,例如
figure.text(x, y, 'text', {
text_align: "center",
text_baseline: "middle",
text_font_size: {
value: '8pt'
},
level: 'overlay'
});
但我总是收到错误
bokeh-0.12.0.min.js:3 Uncaught Error: Text.set('level'): level wasn't declared
我也尝试将level
设置为数值,但没有运气。我想控制字形呈现的顺序,而不必按顺序添加它们,类似于在MatplotLib中执行它的方式。
这可以用Bokeh吗?
答案 0 :(得分:1)
通过更改补丁的.level
属性,可以实现一定程度的控制。
例如,以下代码在蓝点上方产生一个红色补丁:
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
output_notebook()
p = figure(title='one')
p.scatter([1, 2, 3, 4], [1, 2, 1, 3], size=20)
patch = p.varea(x=[1, 2, 3, 4], y1=[0, 1, 0, 2.5], y2=[1.5, 1.75, 1.5, 3.5], color='red', alpha=0.75)
show(p)
如果要控制面片z顺序,则需要将其level
属性修改为以下之一:图像,参考底图,字形,注释或叠加。在我们的情况下,我们需要“参考底图”
p = figure(title='one')
p.scatter([1, 2, 3, 4], [1, 2, 1, 3], size=20)
patch = p.varea(x=[1, 2, 3, 4], y1=[0, 1, 0, 2.5], y2=[1.5, 1.75, 1.5, 3.5], color='red', alpha=0.75)
patch.level = 'underlay'
show(p)
答案 1 :(得分:0)
Bokeh按照将它们添加到绘图中的顺序绘制字形。例如。代码如:
p.vbar(...)
p.line(...)
p.circle(...)
Bokeh将绘制vbars,然后是线条,然后是圆圈。