为什么我不能在条形图上调用 Bokeh file_html?

Why can't I call Bokeh file_html on Bar chart?

所以我有以下代码,效果很好:

from bokeh.plotting import circle
from bokeh.resources import CDN 
from bokeh.embed import file_html

plot = circle([1,2], [3,4])

html = file_html(plot, CDN, "my plot")

html 最终包含一个 html 字符串,该字符串绘制一个圆圈。但是我不能用 Bar 对象做同样的事情。

from bokeh.plotting import circle
from bokeh.resources import CDN 
from bokeh.embed import file_html

plot = Bar(OrderedDict(tuples))

html = file_html(plot, CDN, "my plot")

失败并出现错误:

Traceback (most recent call last):
  File "./viz.py", line 66, in <module>
    html = file_html(b, CDN, "my plot")
  File "/usr/local/lib/python2.7/dist-packages/bokeh/embed.py", line 120, in file_html
    script, div = components(plot_object, resources)
  File "/usr/local/lib/python2.7/dist-packages/bokeh/embed.py", line 41, in components
    ref = plot_object.ref
AttributeError: 'Bar' object has no attribute 'ref'

我假设 Bar 对象不是绘图对象。我怎样才能把它变成一个?

这个问题(当前的 Bokeh 版本为 0.7.1)已得到回答 here and here

考虑到您的代码,以下应该可行:

from bokeh.charts import Bar
from bokeh.resources import CDN 
from bokeh.embed import file_html

plot = Bar(OrderedDict(tuples))
plot.show()
html = file_html(plot.chart.plot, CDN, "my plot")

刚刚偶然发现了这个。一段时间以来,肯定是在 0.12 中,原始代码应该不再产生错误。