簡體   English   中英

散景初始 x 軸縮放范圍並允許在 y_range 范圍內完全縮小 x 軸

[英]Bokeh initial x axis zoom range and allow full zoom out on x axis with y_range bound

通過以下內容,我可以設置過去 4 小時的初始 x 軸縮放范圍。 理想情況下,我希望使用滾輪縮放僅在 x 軸上滾動並查看整個 plot 但仍由設置的范圍限制在 y 軸上。 以下不允許這樣做,並且設置以下任何一項也不允許:

y_range=DataRange1d(0, y_max, bounds="auto")
y_range=DataRange1d(0, y_max) # i.e. bounds=None as per docs

任何人都可以幫助我如何允許在 x 軸上進行初始視圖,允許在 x 軸上縮小,但在 y 軸上設置邊界,以便用戶不能縮小超出最小 y=0 和(在示例)最大 y=8?

根據此處的文檔,在 y 軸上靜態設置邊界的示例代碼:

import pandas as pandas
from bokeh.plotting import figure, output_file, show
from bokeh.models import ColumnDataSource, DataRange1d, Range1d

output_file('stackoverflowq.html')

list1 = [['2020-12-03 09:20:03.175453','5'],['2020-12-04 09:20:03.175453','7'],['2020-12-05 09:20:03.175453','3'],['2020-12-05 09:30:03.175453','4'],['2020-12-05 09:40:03.175453','5'],['2020-12-05 09:50:03.175453','6'],['2020-12-05 10:00:03.175453','4'],['2020-12-05 10:10:03.175453','1'],['2020-12-05 10:20:03.175453','2'],['2020-12-05 10:30:03.175453','8'],['2020-12-05 10:40:03.175453','2'],['2021-01-03 09:20:03.175453','5'],['2021-01-04 09:20:03.175453','7'],['2021-01-05 09:20:03.175453','3'],['2021-01-20 09:30:03.175453','4'],['2021-01-21 01:40:03.175453','5'],['2021-01-21 02:50:03.175453','6'],['2021-01-21 06:00:03.175453','4'],['2021-01-21 07:10:03.175453','1'],['2021-01-21 08:20:03.175453','2'],['2021-01-21 09:30:03.175453','8'],['2021-01-21 10:40:03.175453','2']]

cols = ['DateTime','vals']
df = pandas.DataFrame(list1,columns=cols)
df['DateTime'] = pandas.to_datetime(df['DateTime'])
df = df.set_index('DateTime')

y_max = int(df.vals.unique().max())*1.2

x_max = df.index.unique().max()
x_min = x_max - pandas.Timedelta('4h')

p = figure(x_axis_type="datetime", y_range=DataRange1d(0, y_max, bounds=(0, y_max)), x_range=(x_min, x_max))

p.line(x='DateTime', y='vals', color='blue', source=df)

p.xaxis.axis_label = 'Date Time'
p.yaxis.axis_label = 'vals'

show(p)

您只需更改滾輪縮放工具。 使用tools='xwheel_zoom'

示例請使用我的最小示例,如果您仍有此問題,請給我一些反饋。

import pandas as pd # version 1.1.4
from bokeh.plotting import figure, output_notebook, show # version 2.2.3
from bokeh.models import ColumnDataSource, DataRange1d, Range1d
output_notebook()
date_times = pd.Timestamp.now()
x_max = date_times
x_min = date_times - pd.Timedelta('4h')
x = [x_max - pd.Timedelta(f'{t}h') for t in range(5,0,-1)]
y = [2, 5, 8, 2, 7]

other_tools = "pan, box_zoom, save, reset, help,"
p = figure(x_axis_type="datetime", tools="xwheel_zoom,"+other_tools, x_range=(x_min,x_max))
p.circle(x, y, size=10)
show(p)
初始縮放 使用wheel_zoom 使用xwheel_zoom
初始縮放 縮小 縮小 xwheel_zoom
選擇欄 您必須通過鼠標單擊 select 滾輪縮放工具。

暫無
暫無

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

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