如何从散景图中提取来源?

Mat*_*alZ 2 bokeh

我将 Bokeh Figure 实例作为输入传递给另一个函数,我需要在那里修改它的源。
想不通怎么办!

这就是我创建图形实例的方式:

source = ColumnDataSource({'x': [1,2,3], 'y': [2,4,6]})  

p = figure(tools='pan,wheel_zoom,save,reset', name='p', toolbar_location='above')  

p.circle('x', 'y', source=source, color='slategray', alpha=0.6, name='glyph')
Run Code Online (Sandbox Code Playgroud)

获取此数字的函数应如下所示:

def modify_source(fig):
    fig.source.data['x'] = [6,7,8]
    return fig
Run Code Online (Sandbox Code Playgroud)

Ton*_*ony 5

data_source是字形渲染器的属性:

circle = p.circle('x', 'y', source=source, color='slategray', alpha=0.6, name='glyph')
print(circle.data_source)
Run Code Online (Sandbox Code Playgroud)

您传递给的 JSON 数据可以通过ColumnDataSoource以下方式访问:

print(circle.data_source.data)
Run Code Online (Sandbox Code Playgroud)

一般来说,对于给定的情节:

plot = figure()
line = plot.line('x', 'y', source = source)
circle = plot.circle('x', 'y', source = source)
for renderer in plot.renderers:
    if hasattr(renderer, 'glyph'):
        print (renderer.data_source.data)
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,你可以这样做:

def modify_source(circle):
    circle.data_source.data['x'] = [6,7,8]
    circle.data_source.change.emit() # for changes to take effect
    return circle
Run Code Online (Sandbox Code Playgroud)