首页 > 解决方案 > AmCharts4 - 将 y = 0 轴与多个 y 轴同步

问题描述

我正在尝试在 amcharts4 中构建一个 XY 图表,它有两个 y 轴,一个在左侧,另一个在右侧。两个轴指的是具有不同值范围的两个不同变量。我无法配置图表,以便 y 轴“共享”y = 0 轴。当我想查看 x 轴的一部分并且我对两个独立变量的趋势更感兴趣时,它很有用。我更感兴趣的是查看变量何时为正或负以及它们之间的关系(确切值将显示在提示中)。一种解决方案可能是使用两个 y 轴值之间具有较大范围的固定比例。但是,在这种情况下,如果我有一个变量在 0 附近变化一点,而另一个变量的范围更大,

示例:https ://imgur.com/a/HFqsIy6 浅蓝色表示左侧的 y 轴,紫色表示右侧。

我想要的是一个图表,左边有值 [-2, 2],右边有 [-400, 400],这样 0 就在两个 y 轴的中心。我现在拥有的是一个图表,其中紫色变量似乎具有负值,因为我从左到右读取它。

一个想法是手动计算轴的范围,以便得到新的区间 [-400, 400] 但有两个问题: - 我有大量数据来检查两者的最大值和最小值轴。就我而言,在图表中,将显示大约 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";

标签: angulartypescriptamchartsamcharts4

解决方案


推荐阅读