2014-11-20 76 views
0

我试图从Bokeh条形图中检索嵌入HTML代码。散景:Python:无法获取HTML源代码中的条形图

这个例子正常工作: 从bokeh.resources从bokeh.embed进口autoload_static bokeh.plotting进口圈 导入CDN

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

div = notebook_div(plot) 
js, tag = autoload_static(plot, CDN, "some/path") 

jkl = HTML(div) 
print div 

但是,如果我试图用阴谋=酒吧相同的代码( ...)我得到的错误:

-----> div = notebook_div(plot) 
'Bar' object has no attribute 'ref' 

有没有更好的方法来实现这一点,或者它是不是支持?

回答

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