Как можно напрямую изменить _property_values
элемента боке figure.renderers
? Я узнал, что у lements renderers
есть идентификатор, поэтому я ожидаю сделать что-то вроде renderers['12345']
. Но так как это список (точнее PropertyValueList), это не работает. Вместо этого, единственное решение, которое я нашел, - это перебрать список, сохранив правильный элемент в новом указателе (?), Изменив указатель и, таким образом, изменив исходный элемент.
Вот мой игрушечный пример, где вертикаль строка в гистограмме обновляется на основе значения некоторого виджета:
import hvplot.pandas
import ipywidgets as widgets
import numpy as np
from bokeh.io import push_notebook, show, output_notebook
from bokeh.models import Span
from bokeh.plotting import figure
%matplotlib inline
hist, edges = np.histogram([1, 2, 2])
p = figure()
r = p.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:])
vline = Span(location=0, dimension='height')
p.renderers.extend([vline])
def update_hist(x):
myspan = [x for x in p.renderers if x.id==vline.id][0]
myspan._property_values['location'] = x
show(p, notebook_handle=True)
widgets.interact(update_hist, x = widgets.FloatSlider(min=1, max=2))