AmCharts4 - синхронизировать ось y = 0 с несколькими осями y - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь построить XY-диаграмму в amcharts4, у которой есть две оси Y, одна слева, другая справа.Две оси относятся к двум различным переменным, которые имеют различный диапазон значений.Я не могу настроить график так, чтобы обе оси y «разделяли» ось y = 0.Это полезно, когда я хочу увидеть часть оси x, и меня больше интересует динамика двух отдельных переменных.Меня больше интересует просмотр, когда переменные являются положительными или отрицательными, и как они соотносятся друг с другом (точное значение будет отображаться в tootlip).Одним из решений может быть использование фиксированной шкалы с большим диапазоном между двумя значениями оси y.Но в этом случае, если у меня есть переменная, которая немного изменяется вокруг 0, а другая имеет больший диапазон, линия первого будет довольно плоской по сравнению с огромными изменениями во втором.

Пример: https://imgur.com/a/HFqsIy6 Светло-синий обозначает ось y слева, фиолетовый - справа.

То, что я хочу, это график, который имеет значения слева [-2, 2] и справа [-400, 400], так что 0 находится в центре обеих осей y.Теперь у меня есть график, на котором фиолетовая переменная, кажется, имеет отрицательные значения, так как я читаю ее слева направо.

Одна идея - вручную вычислить диапазон оси, чтобы в результате получитьновый интервал [-400, 400], но есть две проблемы: - У меня есть большой объем данных, чтобы проверить значения max и min на обеих осях.В моем случае на графике будет отображаться около 10 переменных.- Я не могу обобщить исчисление, потому что значения могут быть любого типа: только отрицательные, только положительные или как положительные, так и отрицательные.Я думаю, что функция, которая производит желаемый выходной интервал, слишком дорога для меня.

Существует ли метод / свойство amcharts4 / и т.д., которые позволяют мне легко это сделать?

const data = [{"var1": 0, "var2": 400, "MyDate": `today`}, {"var1": 0, "var2": 0, "MyDate": `tomorrow`};

const chart = am4core.create(chartTitle, am4charts.XYChart);

chart.data = data;

const dateAxis = this.chart.xAxes.push(new am4charts.DateAxis());

const valueAxis1 = this.chart.yAxes.push(new am4charts.ValueAxis());

const valueAxis2 = this.chart.yAxes.push(new am4charts.ValueAxis());
valueAxis2.renderer.opposite = true;

const series = this.chart.series.push(new am4charts.LineSeries());

series.dataFields.valueY = "var1";
series.dataFields.dateX = "MyDate";

const series2 = this.chart.series.push(new am4charts.LineSeries());

series2.dataFields.valueY = "var2";
series2.dataFields.dateX = "MyDate";
...