2014-11-20 51 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