我将一个 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')
获取这个数字的函数应该是这样的:
def modify_source(fig):
fig.source.data['x'] = [6,7,8]
return fig
最佳答案
data_source
是字形渲染器的一个属性:
circle = p.circle('x', 'y', source=source, color='slategray', alpha=0.6, name='glyph')
print(circle.data_source)
您传递给 ColumnDataSoource
的 JSON 数据可以通过以下方式访问:
print(circle.data_source.data)
一般对于给定的地 block :
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)
所以在你的情况下你可以这样做:
def modify_source(circle):
circle.data_source.data['x'] = [6,7,8]
circle.data_source.change.emit() # for changes to take effect
return circle
关于bokeh - 如何从 Bokeh 图中提取来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164328/