我正在尝试在Highcharts折线图的xAxis标签中包含来自我的点的一些额外数据。
我像这样创建我的点数。xAxis是“datetime”类型,而我使用的是自定义tickPositions (这部分工作得很好)。
for (row of results) {
var point = {x:Date.parse(row.time), y:row.value, magicNumber:row.ID};
data_series.data.push(point);
chartConfig.xAxis.tickPositions.push(Date.parse(row.time));
}
在工具提示中,我可以执行以下操作(此操作有效):
tooltip: {
formatter: function() {
return 'ID: ' + this.point.magicNumber + ' Value:' + this.point.y.toFixed(3);
},
},
如何在xAxis格式化程序中执行等效操作?the docs不清楚这是否可能。
xAxis: {
type: 'datetime',
labels: {
rotation: 90,
formatter: function () {
var ID = **What goes here to obtain magicNumber?**
var datetime = new Date(this.value);
return ID.toString() + ' ' + datetime.toISOString();
}
},
tickPositions: []
}
发布于 2018-08-14 22:29:05
试试这个,如果我的解决方案不起作用,console.log(this);
会给你一个提示。
xAxis: {
type: 'datetime',
labels: {
rotation: 90,
formatter: function () {
console.log(this);
var ID = this.chart.series[0].data[this.pos].magicNumber;
var datetime = new Date(this.value);
return ID.toString() + ' ' + datetime.toISOString();
}
},
tickPositions: []
}
发布于 2018-08-15 04:00:20
这两个格式化程序具有不同的上下文,因此一种解决方法是迭代数据的每个点(在xAxis.labels.formatter
函数内),找到与this.value
具有相同x
的点,并将其赋给某个变量。这应该足够了,但当没有一个点不适合滴答值时,可能会返回一个空对象。
xAxis: {
type: 'datetime',
labels: {
formatter() {
var points = this.chart.userOptions.series[0].data
var sameTimestampPoint = points.filter(p => p.x === this.value)[0]
var magicValue = sameTimestampPoint ? sameTimestampPoint.magicValue : ""
return magicValue + '<br/>' + this.value
}
}
}
https://stackoverflow.com/questions/51843411
复制相似问题