添加次要y轴后,散景自动缩放轴

时间:2019-07-15 21:09:26

标签: python python-3.x plot bokeh

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

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

数据框如下:

波长340440550 ... 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)

当前输出如下: Output Screenshot

2 个答案:

答案 0 :(得分:1)

应注意以下几点:

  • 如果通过使用固定的result或通过在Range1d上手动设置startend来提供明确的范围值,则Bokeh会假定您是故意这样做,并且不会覆盖您的设置(即,不再有数据范围)

  • 仅供参考,由于不清楚您要遵循的内容,Bokeh“双”轴将始终保持其原始相对比例。初始化后,它们就不能独立变化。 (例如,缩放一个会缩放另一个缩放比例)

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

    DataRange1d
  • 我不确定具有两个双轴自动量程是否会起作用。 AFAIK没有人尝试过。您可能只能通过以下方式来设置自动量程:通过使用一个字形配置主范围r1 = p.line(...) p.y_range.renderers = [r1] # only auto-range based on this one line ,并在其后附加一个初始固定范围DataRange1d(将随其他主量程缩放)

答案 1 :(得分:0)

我也在处理散景数据流。我遇到了同样的问题,我一直在寻找解决方案。我刚刚尝试了一个新东西,它帮助我解决了这个问题。 试试这个:不要放 y_range = DataRange1d(),只需将 None 值设置为 y_range = None。对于每个回调,我认为应该是相同的。我希望这可以帮助您解决这个问题。