0

ボケ棒グラフから埋め込み用の html コードを取得しようとしています。

この例は問題なく動作します: from bokeh.resources import CDN from bokeh.plotting import circle from 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'

これを達成するためのより良い方法はありますか、それとも単にサポートされていませんか?

4

1 に答える 1

0

Bokeh バージョン 0.7.0 までの Bokeh.charts インターフェイスは、プロットよりも高いレベルの抽象化を提供します。Plot から継承しないため、プロット インスタンスを直接置き換えることはできません。つまり、グラフの種類には、この場合に使用できる基になるプロット オブジェクトがあります。それは怠惰に作成されており、現時点では、例で使用できるようにするための機械が必要です。チャートに関してオープンな議論があり、これはリリースでより簡単になり、より一貫したものになる可能性が非常に高い.

その間、次のアプローチを使用できます(例/チャートで見つけることができるバーノートブックを変更します):

 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
于 2015-01-07T23:57:24.870 に答える