如何控制 Bokeh 中字形的 z 顺序?
How to control the z-order of glyphs in Bokeh?
我一直在查看示例、文档和 google,但我找不到示例或说明如何简单地执行此操作...
我直接使用 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 实现吗?
Bokeh 按照添加到绘图中的顺序绘制字形。例如。使用如下代码:
p.vbar(...)
p.line(...)
p.circle(...)
Bokeh 将绘制 vbars,然后是直线,然后是圆圈。
通过更改补丁的 .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
属性为以下之一:image, underlay, glyph, annotation or overlay。在我们的例子中,我们需要 "underlay"
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)
我一直在查看示例、文档和 google,但我找不到示例或说明如何简单地执行此操作...
我直接使用 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 实现吗?
Bokeh 按照添加到绘图中的顺序绘制字形。例如。使用如下代码:
p.vbar(...)
p.line(...)
p.circle(...)
Bokeh 将绘制 vbars,然后是直线,然后是圆圈。
通过更改补丁的 .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
属性为以下之一:image, underlay, glyph, annotation or overlay。在我们的例子中,我们需要 "underlay"
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)