具有自动布局的一个轴上的多级(分组)标签

时间:2017-07-24 07:37:46

标签: python bokeh

散景中的一个轴上是否可以有多个级别的标签?也就是说,对于像

这样的数据源
TheBars | ThFoos | TheValues
--------|--------|----------
Bar     | Barfoo | 5
Bar     | Bargoo | 6
Bar     | Barhoo | 7
Foo     | Foobar | 1
Foo     | Foocar | 2

...组BarFoo中的所有列不仅应该组合在一起,还要在轴上附加一个公共组标签。在Excel呈现的示例中:

Multi-level labels

我目前正在使用bokeh.models.CategoricalColorMapper直观地分隔这些组,并使用数据源中的排序来使这些组粘在一起。这很好用,我也喜欢标签。

2 个答案:

答案 0 :(得分:1)

UPDATE 此PR已合并,现在多级轴的显示方式如下:

enter image description here

此新功能的预览(开发)文档可在此处查看:

http://bokeh.pydata.org/en/dev/docs/user_guide/categorical.html

有一个open Pull Request将此功能添加到Bokeh。它将于2017年8月中旬0.12.7发布。

一旦它落地,你就可以编写这样的代码:

from bokeh.io import output_file, show
from bokeh.models import FactorRange
from bokeh.plotting import figure
from bokeh.sampledata.autompg import autompg as df

df.origin = df.origin.astype(str)
df.cyl = df.cyl.astype(str)
group = df.groupby(('origin', 'cyl'))
stats = group.mean()

p = figure(x_range=FactorRange(*group.groups.keys(), factor_padding=0.2), y_range=(0,35), tools="hover")
p.vbar(x=stats.index, top=stats.mpg, width=1, line_color="white")
p.xgrid.grid_line_color = None

output_file("foo.html")

show(p)

这将产生此输出(注意:视觉上的轴标签将跨越两个级别,就像您在上面合并最终PR时那样)

enter image description here

答案 1 :(得分:0)

我想知道拉力是否已经完成了?我无法复制v0.12.7中的多级轴,包括所提到的所有分类教程链接。

结果:

    ValueError: expected an element of either List(String) 
    or List(Int), got [('3', '6'), ('1', '6'), ('1', '4'), ('3', '3'), ('1', '8'), ('2', '6'), ('3', '4'), ('2', '5'), ('2', '4')]