我有一张动态更新的highcharts图表。我使用" AddPoint"将值添加到系列中。该系列的功能。这是我如何初始化图表。
var _trendToolChart = null;
var _trendSeries = null;
function createTrendTool() {
_trendToolChart = Highcharts.chart('trendToolContainer', {
chart: {
type: 'spline',
zoomType: 'x',
panning: true,
panKey: 'shift'
},
title: {
text: 'Trending Signals'
},
yAxis: {
title: {
text: 'Values'
}
},
xAxis: {
title: {
text: 'Time'
},
type: 'datetime'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle'
},
plotOptions: {
series: {
label: {
connectorAllowed: true
}
}
},
responsive: {
rules: [{
condition: {
},
chartOptions: {
legend: {
layout: 'horizontal',
align: 'center',
verticalAlign: 'bottom'
}
}
}]
}
});
_trendToolChart.showLoading("Loading...");
}
我将_trendToolChart变量保留为以后的全局引用。在常规我查询我们的API以获取值。值返回值是日期时间的x值和小数点的y值。由于我有一个多行系列,我有一个WebId与图表本身的每一行相关联。我通过此GUID找到该系列,然后为该系列添加一个点。
当我在第二个叫它时,函数里面有这个函数:
var xValue = Date.UTC(apiResponse.DateString); // convert str to date
var yValue = apiResponse.Value; // decimal value
var point = [xValue, yValue];
// add to series & graph
var chartSeries = $.grep(_trendToolChart.series, function (e) { return e.userOptions.WebId == apiResponse.elemId; })[0];
chartSeries.addPoint(point);
_trendToolChart.redraw();
当我将这些值添加到图表时,highcharts会将x值添加为整数计数,不是作为日期。这是Chrome开发者方面响应函数内部的检查:
因此,在我的x值中得到[0,22]而不是一系列[" 11/27/2017",22]。它在我的图表上显示,我的xaxis标签有一个" 0"或1而不是日期。
这是我尝试过的,而不是addPoint([Date,number]);我已经完成了addPoint({x:Date,y:number});现在,在高潮系列中的点上显示了一个日期值,但是在我的图表上我看到了,在重绘后添加了ZERO点。
我做错了什么?
答案 0 :(得分:0)
好吧,看起来放在x值中的对象不是日期,尽管看起来如此。它实际上是一个字符串。 所以这会返回一个字符串:
Date("2017-11-27")
因此,highcharts不知道如何将其解释为日期时间,因为我告诉它在选项中执行日期时间。解决方案是:
moment("2017-11-27").ToDate()
这返回了一个正确的日期对象,并且highcharts能够解释。