2017-03-06 57 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