我正在尝试从Bokeh条形图中检索用于嵌入的html代码。
此示例正常工作: 来自bokeh.resources导入CDN 来自bokeh.plotting导入圈 来自bokeh.embed import autoload_static
plot = circle([1,2], [3,4])
div = notebook_div(plot)
js, tag = autoload_static(plot, CDN, "some/path")
jkl = HTML(div)
print div
但是,如果我使用plot = Bar(...)尝试相同的代码,我会收到错误:
-----> div = notebook_div(plot)
'Bar' object has no attribute 'ref'
有没有更好的方法来实现这一目标,还是根本不支持?
答案 0 :(得分:0)
Bokeh.charts界面直到Bokeh版本0.7.0提供了更高级别的抽象,然后绘图。它不会继承自Plot,因此无法直接替换绘图实例。那就是说Chart类型有一个底层的绘图对象,可以在这种情况下使用。它是懒洋洋地创建的,目前需要一些机器来使它可用于你的例子。有关图表的公开讨论,这很可能会在版本中更容易和更一致。
同时您可以使用以下方法(更改示例/图表中可以找到的条形图笔记本):
from collections import OrderedDict
import numpy as np
from bokeh.charts import Bar
from bokeh.sampledata.olympics2014 import data as original_data
from IPython.core.display import HTML
from bokeh.resources import CDN
from bokeh.plotting import circle
from bokeh.embed import autoload_static, notebook_div
data = {d['abbr']: d['medals'] for d in original_data['data'] if d['medals']['total'] > 0}
countries = sorted(data.keys(), key=lambda x: data[x]['total'], reverse=True)
gold = np.array([data[abbr]['gold'] for abbr in countries], dtype=np.float)
silver = np.array([data[abbr]['silver'] for abbr in countries], dtype=np.float)
bronze = np.array([data[abbr]['bronze'] for abbr in countries], dtype=np.float)
medals = OrderedDict(bronze=bronze, silver=silver, gold=gold)
bar = Bar(medals, countries, title="grouped, dict_input",
xlabel="countries", ylabel="medals", legend=True, width=800,
height=600)
bar.show()
plot = bar.chart.plot
div = notebook_div(plot)
js, tag = autoload_static(plot, CDN, "some/path")
jkl = HTML(div)
print div