Боке, Python: как обновить диапазон дополнительной оси

Я хотел бы создать график с двумя осями Y, диапазоны которых обновляются при нажатии кнопки. Скрипт будет работать на сервере Bokeh. Обратите внимание, что в приведенном ниже коде основная ось Y обновляется путем изменения f.y_range.start/end. Однако это невозможно со вторичной осью Y. Вместо этого я попробовал две другие команды, т.е.

f.extra_y_ranges.update({"y2Range": Range1d(start=0, end=50)})

а также

f.extra_y_ranges.update = {"y2Range": Range1d(start=0, end=50)}

Но ни один из них не работает.

Подобные вопросы задавались здесь: Боке: как изменить видимость дополнительной оси

# Import libraries
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, Range1d, LinearAxis
from bokeh.models.widgets import Button
from bokeh.layouts import layout
from bokeh.plotting import figure


# Create figure
f=figure()

# Create ColumnDataSource
source = ColumnDataSource(dict(x=range(0,100),y=range(0,100)))

# Create Line
f.line(x='x',y='y',source=source)
f.extra_y_ranges = {"y2Range": Range1d(start=0, end=100)}
f.add_layout(LinearAxis(y_range_name='y2Range'), 'left')

# Update axis function
def update_axis():
    f.y_range.start = 0 
    f.y_range.end   = 50

# Create Button
button = Button(label='Set Axis')

# Update axis range on click
button.on_click(update_axis)

# Add elements to curdoc 
lay_out=layout([[f, button]])
curdoc().add_root(lay_out)

person user7435037    schedule 27.02.2017    source источник


Ответы (1)


Я столкнулся с аналогичной проблемой. Я смог обновить диапазон вторичной оси, обратившись к ней через словарь «extra_y_axis» через имя, с которым я ее создал. В вашем случае это должно выглядеть примерно так:


# Update primary axis function
def update_axis():
    f.y_range.start = 0 
    f.y_range.end   = 50   

# Update secondary axis function
def update_secondary_axis():
    f.extra_y_ranges['y2Range'].start = -20 #new secondary axis min
    f.extra_y_ranges['y2Range'].end = 80 #new secondary axis max
person thorbjorn444    schedule 13.03.2017
comment
Большое спасибо! Теперь я столкнулся с новой проблемой с назначением осей линейным глифам. Может быть, у вас есть идея, как ее решить. Найдите описание здесь. . - person user7435037; 15.03.2017