[当图表在我的应用程序的另一部分中呈现时,我希望能够使用在Highcharts x和y轴上打印的值,例如,一个从0到n的数字数组。
我正在使用highcharts-react-official
-我找不到关于返回值的方法的任何文档,因为这些值正好打印在屏幕上。
这可能吗?
使用此代码,我可以返回一个数字数组,这些数字表示y轴上的刻度值:
const options: Highcharts.Options = {
yAxis: {
labels: {
formatter(): string {
console.log('YAXIS', Object.keys(this.axis.ticks)
}
}
}
}
尽管数组包含一个负数,但我在图表轴本身看不到。
相同的技巧不适用于x轴。
是否有一种更清洁的方法可以获得正确的结果?
按照下面的解决方案,我终于得到了想要的东西:这不符合您的预期:
const res = this.yAxis
.map((axis) => axis.ticks)
.map((axisTicks) => Highcharts.objectEach(axisTicks, (tick) => tick.label.textStr));
console.log(res); // undefined;
但是这样做:
const yAxisVals: string[][] = [];
const axisTicks = this.yAxis.map((axis) => axis.ticks);
axisTicks.forEach((item, idx) => {
yAxisVals[idx] = [];
Highcharts.objectEach(item, (tick) => yAxisVals[idx].push(tick.label.textStr));
});
console.log(yAxisVals);
您可以使用render
事件并通过Axis.tickPositions
属性获取值:
chart: {
events: {
render: function() {
var xAxisTickPositions = this.xAxis[0].tickPositions,
yAxisTickPositions = this.yAxis[0].tickPositions;
console.log(xAxisTickPositions, yAxisTickPositions);
}
}
}
实时演示: http://jsfiddle.net/BlackLabel/6m4e8x0y/4960/
API参考:
https://api.highcharts.com/highmaps/chart.events.render
https://api.highcharts.com/class-reference/Highcharts.Axis#tickPositions