散景互动图例隐藏多个字形

Pra*_*non 7 python pandas bokeh

我为数据集启用了“隐藏图例”选项。当我单击它时,只有一个小节消失,其他小节则停留。我不太确定是什么原因引起的。

这是之前和之后的条形图:

之前和之后

这是我的数据:

这是

这是代码:

p = Bar(output,'Programs',values="Averages", group="University",plot_width=600,plot_height=400, title="Comparison")
p.legend.click_policy="hide"
output_file("bar.html")
show(p)
Run Code Online (Sandbox Code Playgroud)

tuo*_*tik 3

目前(Bokeh 0.12.6)不可能通过 隐藏所有条形legend.click_policy="hide",如文档中所述中所述:

\n\n
\n

交互式图例功能当前适用于 \xe2\x80\x9cper-glyph\xe2\x80\x9d 图例。通过指定自动分组的列创建的图例尚不支持下述功能

\n
\n\n

但是,可以通过使用 CustomJS 添加CheckboxGroup()来隐藏栏,在单击复选框时隐藏栏。下面您可以看到MCVE,它也可以作为 Jupyter Notebook 在线获取

\n\n
import numpy as np\nfrom bkcharts import Bar, show\nfrom bokeh.layouts import column\nfrom bokeh.models import CheckboxGroup, CustomJS\n\ndata = {\'University\': [\'ENGT\'] * 3 + [\'UBC\'] * 3,\n        \'Averages\': [76.5, 79.9, 72.2, 71, 72, 69],\n        \'Programs\': [\'CHML\', \'CIVL\', \'CPEN\', \'CHML\', \'CIVL\', \'CPEN\']}\n\ngroup = "University"\nbars = Bar(data=data, label=\'Programs\', values="Averages", group=group,\n           plot_width=600, plot_height=400, title="Comparison")\n\ncheckboxes = CheckboxGroup(labels=np.unique(data[group]).tolist(),\n                           # Make all checkboxes checked by default\n                           active=list(range(np.unique(data[group]).size)))\ncheckboxes.callback = CustomJS(args=dict(bars=bars), code="""\n\nvar group = \'%s\';\n\nfunction change_bars_visibility(checkbox_name, visible) {\n    for (j = 0; j < bars.renderers.length; j++) {\n        // Go through rendered objects\n\n        if (bars.renderers[j].attributes.hasOwnProperty(\'data_source\') && \n            bars.renderers[j].data_source.data[group][0] === checkbox_name) {\n\n            // Change the visibility of this rendered object if it belongs to\n            // the group determined by the checkbox that was clicked\n            bars.renderers[j].visible = visible;\n        }\n    }\n}\n\nfor (i = 0; i < cb_obj.labels.length; i++) {\n    // Go through checkbox labels\n    var checkbox_name = cb_obj.labels[i];\n\n    if (cb_obj.active.indexOf(i) >= 0) {\n        // alert(checkbox_name + " is activated");\n        change_bars_visibility(checkbox_name, true);\n    }\n    else {\n        // alert(checkbox_name + " is disabled");\n        change_bars_visibility(checkbox_name, false);\n    }\n}\n""" % group)\n\nshow(column(bars, checkboxes))\n
Run Code Online (Sandbox Code Playgroud)\n

  • 恐怕今天在 [Bokeh 1.3.0](https://bokeh.pydata.org/en/latest/docs/user_guide/interaction/legends.html) 中仍然是一样的。我尝试在 hbar 图中实现交互式图例。我想将一些酒吧静音。单击图例中的元素时,整个图例变为半透明,但条形保持不变。 (2认同)