首页 > 解决方案 > jqplot Y轴重新缩放

问题描述

我正在使用 jqplot 来表示整个时间序列中的几个参数。所以我有一个 Xaxis 代表时间和几个 Yaxes(yaxis、y2axis、y3axis、y4axis 等)。每个参数都有不同的单位(温度、电压、电流、压力等),所以所有的 Yaxes 都设置为自动的最小值和最大值,因为我不知道服务器会提供什么值。我正在使用 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)设置新的最大值时,一切都很好。

但是,当我尝试设置任何其他轴的 max 参数时 - 例如 y4axis 出现问题并且该最大值具有与此不同的值,用户被输入。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

这是来自 console.log 输出的调试

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

有任何想法吗?

标签: jqplotliveyaxisrescale

解决方案


因此,如果有人问同样的问题,我已经找到了解决方案。

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

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 min/max 参数:

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

最后重新绘制它:

plot.replot(plotOptions);

推荐阅读