2017-03-06 61 views
1

是否可以在不使用show()的情況下顯示並更新Bokeh中的Pandas圖?網上有這樣的例子嗎?我似乎無法找到任何。例如,像:使用散景服務器的熊貓圖?

def bar_plot(fig, source): 
    p = pd.DataFrame() 
    p = p.from_dict(source.data) 

    fig = p.plot.bar() 
    return fig 

def update_data(): 
    data = source.data 
    data['y'] = random.sample(range(0,100),len(data['y'])) 
    source.data = data 

button.on_click(update_data) 
source = ColumnDataSource(data) 

fig = bar_plot(fig, source) 
layout = layout([[button,fig]]) 
curdoc().add_root(layout) 
+0

你爲什麼要用vbar過濾?如果你的數據在數據框中,你可以很容易地將其轉換爲ColumnDataSource,並使用我發佈的方法 - 你在這裏複製並更改? – Anthonydouc

+0

你的方法適合我。我想製作一個簡單的應用程序,它有兩個選項卡 - 一個繪製條形圖,一個繪製詞雲。我只是想弄清楚如何定義和調用我自己的繪圖功能,除了在Bar,vbar等內置的Bokeh之外,還會繪製其他東西。但是聽起來好像不太容易。 – Kyle

+0

哦,就像你想在其他圖書館裏畫陰影並把它們傳到散景中一樣,對不起,我誤解了這一點。如果您真的想使用不帶散景源的其他地塊 - 您可以通過重新創建它們來每次手動更新圖表。 – Anthonydouc

回答

0

熊貓內置.plot方法使用Matplotlib生成圖像。 Bokeh服務器無法同步或更新Python/JS邊界上的MPL圖。 Bokeh服務器只能顯示和更新使用原生Bokeh API創建的圖(即,您可以使用Figure.vbar或類似的Bokeh函數從數據框中創建條形圖)。

+0

謝謝!我想創建一個帶有兩個選項卡的簡單應用程序 - 一個顯示條形圖,另一個顯示詞雲。我知道在Bokeh之外製作詞雲的方法,但是可以在* Bokeh中做*嗎? – Kyle

+0

有幾種可能性。不知道他們中的任何一個都很完美。但是,對於推測性討論來說SO不是很好,所以我建議[public mailing list](https://groups.google.com/a/continuum.io/forum/#!forum/bokeh)是一個更好的地方討論一下 – bigreddot