添加辅助 y 轴后,散景自动缩放轴

Bra*_*wed 4 python plot python-3.x bokeh

我正在尝试在一个带有辅助 y 轴的图形上绘制两组图形。我无法让它们都根据数据进行自动缩放。

我无法设置范围,因为我正在标记 10 个数字,并且代码将用于范围会有所不同的不同来源。另外,目前,我将一个范围设置为特定值,但我希望将它们都设置为自动缩放。

数据框看起来像:

波长 340 440 550 ... 340std 440std 2017-07-01 14:40 2.05 3.02 2.14 ... 0.002 0.00054 ....


TOOLS = "pan,wheel_zoom,box_zoom,reset,save"
p = figure(tools=TOOLS, x_axis_type='datetime',plot_height=400, 
           plot_width=700,
           outline_line_color = 'gray',
           y_axis_label = 'Radiance[W/m^2.sr.nm]',
           y_range = DataRange1d()
          )
# Setting the second y axis range name and range
p.extra_y_ranges = {"foo": Range1d(start=0, end=0.000006)}

# Adding the second axis to the plot.  
p.add_layout(LinearAxis(y_range_name="foo"), 'right')

p.line(x='Time', y='340.0', line_color="darkcyan", line_width=1, 
       source=source)
p.line(x='Time',y='340.0std', line_color = 'red', line_width=1, 
       y_range_name="foo", source=source)

one = Panel(child=row(p), title='wavelength_one')
tabs = Tabs(tabs = [one,two,three,four,five,six])

show(tabs)

Run Code Online (Sandbox Code Playgroud)

当前输出如下所示: 输出截图

big*_*dot 5

需要注意以下几点:

  • 如果您提供明确的范围值,无论是通过使用固定值还是Range1d手动设置,Bokeh 都会假设您是故意这样做的,并且不会覆盖您的设置(即不再进行数据范围)startendDataRange1d

  • 仅供参考,因为不清楚您在追求什么,散景“双”轴将始终保持彼此原始的相对比例。一旦初始化就不能独立变化。(例如,缩放一个将按相同比例缩放另一个)

  • DataRange1d对象有一个renderers您可以指定的属性,以明确告诉范围自动调整范围时要考虑哪些字形。默认情况下,DataRange1d除非您另有说明,否则会自动尝试考虑每个可用的字形:

    r1 = p.line(...)
    
    p.y_range.renderers = [r1] # only auto-range based on this one line
    
    Run Code Online (Sandbox Code Playgroud)
  • 我不确定是否可以使用两个双轴自动量程。AFAIK 没有人尝试过。您可能只能通过使用DataRange1d其中一个字形配置主范围以及Range1d额外的初始固定范围(将随着其他主范围比例进行缩放)来设置自动范围