python - 散景自动缩放轴,添加辅助 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)
解决方案
有几点需要注意:
如果您提供明确的范围值,无论是通过使用固定
Range1d
或手动设置start
或end
在DataRange1d
Bokeh 假设您是故意这样做的,并且不会覆盖您的设置(即不再有数据范围)仅供参考,由于尚不清楚您在追求什么,因此散景“双”轴将始终保持彼此之间的原始相对比例。初始化后不能独立变化。(例如,缩放一个将以相同的比例缩放另一个)
DataRange1d
对象具有renderers
您可以指定的属性,以明确告知自动范围时要考虑哪些字形的范围。默认情况下DataRange1d
会自动尝试考虑每个可用的字形,除非您另有说明:r1 = p.line(...) p.y_range.renderers = [r1] # only auto-range based on this one line
我不确定是否有两个带有双轴的自动范围。AFAIK 没有人尝试过。您可能只能通过
DataRange1d
使用其中一个字形配置主要范围以及额外的初始固定范围Range1d
(将随着其他主要范围缩放)来设置自动范围
推荐阅读
- node.js - Django/react Dockerfile 阶段不能一起工作
- amazon-web-services - mup.js 文件中的身份验证错误 - 流星
- c++ - 如何在 C++ 中使用派生聚合的指定初始化?
- mysql - 如何使用 node.js 将对象插入 mysql 表
- swift - 如何将对象的新实例添加到对象数组中 XCode
- c# - 统一镜子;生成不同的 Player Prefabs
- jquery - 在 MaterializeCSS 模态中调用 Summernote 弹出模态问题
- r - 用日期和数值填充 R 中的数据框
- python - 如何计算两条线之间的水平距离
- c# - 如何检索用户名和姓并将其映射到 ViewModel