JQPlot Яксис масштабирования

Я использую jqplot для представления нескольких параметров последовательно в течение времени. Итак, у меня есть один Xaxis, представляющий время, и несколько Yaxes(Yaxis, Y2axis, Y3axis, Y4axis и т. Д.). Каждый параметр представлен в разных единицах (температура, напряжение, ток, давление и т. Д.), Поэтому все Yaxes установлены на auto для min и max, потому что я не знаю, какие значения будут поступать с сервера. Я использую 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, что-то пошло не так, и это значение max отличается от значения, введенного пользователем.

Это отладка из вывода console.log

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

Есть идеи?

1 ответ

Так что я нашел решение, если кто-то спрашивает то же самое.

Хитрость в том, что вам нужно установить минимальные и максимальные параметры для всех Yaxis на вашем графике. Итак, я подготовил объект осей min/max с его исходными значениями:

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}
    }
}

Затем установите желаемый параметр Yaxis min/max в объекте plotOptions:

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

и, наконец, пересказать это:

plot.replot(plotOptions);
Другие вопросы по тегам