首页 > 解决方案 > 散景自动缩放轴,添加辅助 y 轴后

问题描述

我正在尝试在一个带有辅助 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)

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

标签: pythonpython-3.xplotbokeh

解决方案


有几点需要注意:

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

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

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

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


推荐阅读