簡體   English   中英

散景中多個 y 軸的單獨范圍滑塊

[英]Separate range sliders for multiple y axes in bokeh

我有多個線圖可以繪制在一個圖形上,我正在使用 bokeh.plotting 進行此操作。 使用

p0.line(), 

p0.extra_y_ranges(),

p0.add_layout(LinearAxes())

p0 是 1 個散景圖。

附上示例圖以供參考。

我想在右側分別為每個 y 軸設置 range_sliders。 這可以使用散景嗎?

對於主要 y 軸,范圍 slider 可以正常使用

# set up RangeSlider y_counts
range_slider_c = RangeSlider(
    title="c",
    start=-10,
    end=400,
    step=1,
    value=(-1, 300),
    height = 250,
    orientation='vertical',
    show_value= False,
    direction = 'rtl'
)
range_slider_c.js_link("value", p0.y_range, "start", attr_selector=0)
range_slider_c.js_link("value", p0.y_range, "end", attr_selector=1)

但我不清楚如何調用附加 y 軸的范圍,就像我在 js.link 中為 p0.y_range 所做的那樣。

我希望我能夠正確解釋我的要求。

這個答案是基於你上一個問題的答案。

正如那里提到的那樣,額外的 y 范圍保存在帶有關鍵字extra_y_ranges的字典中。 因此,您只需使用具有有效名稱的extra_y_ranges更改js_link 例如range_slider_c.js_link("value", p0.extra_y_ranges["c", "start", attr_selector=0)

完整的最小示例

from bokeh.layouts import column
from bokeh.models import LinearAxis, Range1d, CustomJS, RangeSlider
from bokeh.plotting import figure, show, output_notebook
output_notebook()

data_x = [1,2,3,4,5]
data_y = [1,2,3,4,5]
color = ['red', 'green', 'magenta', 'black']
p = figure(plot_width=500, plot_height=300)
p.line(data_x, data_y, color='blue')

range_sliders = []
for i, c in enumerate(color, start=1):
    name = f'extra_range_{i}'
    lable = f'extra range {i}'
    p.extra_y_ranges[name] = Range1d(start=0, end=10*i)

    p.add_layout(LinearAxis(axis_label=lable, y_range_name=name), 'right')
    p.line(data_x, data_y, color=c, y_range_name=name)

    range_slider = RangeSlider(start=0, end=10*i, value=(1,9*i), step=1, title=f"Slider {lable}")
    range_slider.js_link("value", p.extra_y_ranges[name] , "start", attr_selector=0)
    range_slider.js_link("value", p.extra_y_ranges[name] , "end", attr_selector=1)

    range_sliders.append(range_slider)

show(column(range_sliders+[p]))

Output

具有多個滑塊的多個 y 范圍

評論

為了堆疊滑塊和圖形,我使用column布局,它采用散景對象列表。 其他布局可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM