Как извлечь источник из фигуры боке? - PullRequest
0 голосов
/ 16 мая 2019

Я передаю экземпляр 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

1 Ответ

2 голосов
/ 16 мая 2019

data_source является свойством средства визуализации глифов:

circle = p.circle('x', 'y', source=source, color='slategray', alpha=0.6, name='glyph')
print(circle.data_source)

А данные JSON, которые вы передали ColumnDataSoource, доступны:

print(circle.data_source.data)

В общем случае для данного участка:

plot = figure()
line = plot.line('x', 'y', source = source)
circle = plot.circle('x', 'y', source = source)
for renderer in plot.renderers:
    if hasattr('glyph', renderer):
        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
...