jqplot Yaxis重新缩放

时间:2018-12-02 14:35:27

标签: jqplot live yaxis rescale

我正在使用jqplot表示整个时间序列中的几个参数。所以我有一个Xaxis代表时间,还有几个Yaxes(yaxis,y2axis,y3axis,y4axis等)。每个参数都以不同的单位(温度,电压,电流,压力等)表示,因此所有Yaxes都设置为auto的最小值和最大值,因为我不知道服务器会得到什么值。我正在使用ajax请求填充数据,然后使用新点实时更新系列。

所以现在我希望用户能够为任何Y轴设置手动的最小值和最大值。所以我这样设置:

var axis_name="y2axis";
console.log(plot.axes[axis_name].max);
var new_max=prompt("Please enter max value?");
console.log(new_max);
var plotOptionsEval = "plotOptions = { axes: { "+axis_name+": { max: \""+new_max+"\" } } };";
eval(plotOptionsEval);
console.log(plotOptions);
plot.replot(plotOptions);
console.log(plot.axes[axis_name].max);

所以,当我为第一个轴(yaxis)设置新的最大值时,一切都很好。

但是,当我尝试设置任何其他轴(例如y4轴)的max参数时,出了点问题,并且max值与此值有一些不同。

enter image description here enter image description here enter image description here

这是从console.log输出进行的调试

50
12
axes: y4axis: {max: "12"}
350

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

因此,如果有人提出相同的要求,我已经找到了解决方案。

诀窍是您需要为绘图中的所有Yaxis设置最小和最大参数。因此,我准备了带有原始值的最小/最大轴对象:

var plotOptions = {
    axes: {
        yaxis: {min: 11.568, max: 11.582}
        y2axis: {min: 11.688, max: 11.702}
        y3axis: {min: 6.390000000000001, max: 6.53}
        y4axis: {min: -300, max: 50}
    }
}

下一步,在plotOptions对象中设置所需的Yaxis最小/最大参数:

var new_max=prompt("Please enter max value?");
plotOptions.axes.y2axis.max=parseFloat(new_max);

最后重新绘制它:

plot.replot(plotOptions);