散景中的一个轴上是否可以有多个级别的标签?也就是说,对于像
这样的数据源TheBars | ThFoos | TheValues
--------|--------|----------
Bar | Barfoo | 5
Bar | Bargoo | 6
Bar | Barhoo | 7
Foo | Foobar | 1
Foo | Foocar | 2
...组Bar
和Foo
中的所有列不仅应该组合在一起,还要在轴上附加一个公共组标签。在Excel呈现的示例中:
我目前正在使用bokeh.models.CategoricalColorMapper
直观地分隔这些组,并使用数据源中的排序来使这些组粘在一起。这很好用,我也喜欢标签。
答案 0 :(得分:1)
UPDATE 此PR已合并,现在多级轴的显示方式如下:
此新功能的预览(开发)文档可在此处查看:
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时那样)
答案 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')]