据我所知,在使用x范围滑块时,无法使y轴自动缩放。 Y轴范围是根据整个x范围的y值选择的,并且在缩放后不会改变。 在波动期的蜡烛图中,这尤其令人恼火。 当您使用x范围滑块缩放时,实际上会得到平坦的蜡烛图,因为它们的波动只覆盖初始范围的一小部分。 经过一些研究,似乎已经在这方面取得了一些进展:https://github.com/plotly/plotly.js/pull/2364。 有人知道是否有适用于plotly.py的解决方案吗?
感谢您的时间。
如果有帮助的话,我在 yaxis 上使用 fixedrange = False,以便能够手动缩放并调整适合的 y 范围:
yaxis = dict(
fixedrange = False
)
$('#myDiv').on('plotly_relayout', function(event, arguments){
var _arg=arguments;
var _keys = Object.keys(_arg);
var _str=_keys[0];
window.console.log("relayout for ..",_str);
if( _str == "xaxis.range") {
var new_range = _arg[_str];
var newMax = null;
var newMin = null;
for (var key in chart_data){
var lowIdx = chart_data[key][0].find(x => x.includes(new_range[0].split(" ")[0]));
var highIdx = chart_data[key][0].find(x => x.includes(new_range[1].split(" ")[0]));
if (lowIdx == null || highIdx == null)
{
return;
}
var subChartData = chart_data[key][1].slice(chart_data[key][0].indexOf(lowIdx), chart_data[key][0].indexOf(highIdx));
var netMax = Math.max.apply(Math, subChartData);
var netMin = Math.min.apply(Math, subChartData);
if (newMax == null || newMax < netMax)
{
newMax = netMax;
}
if (newMin == null || newMin > netMin)
{
newMin = netMin;
}
}
var update = {
'yaxis.range': [newMin, newMax]
};
Plotly.relayout('myDiv', update);
}
});
layout = go.Layout(
xaxis = dict(
rangeslider = dict(
visible = False
)
)
)