Highcharts添加整数而不是日期

时间:2017-11-27 14:57:41

标签: javascript charts highcharts

我有一张动态更新的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开发者方面响应函数内部的检查:

enter image description here

因此,在我的x值中得到[0,22]而不是一系列[" 11/27/2017",22]。它在我的图表上显示,我的xaxis标签有一个" 0"或1而不是日期。

enter image description here

这是我尝试过的,而不是addPoint([Date,number]);我已经完成了addPoint({x:Date,y:number});现在,在高潮系列中的点上显示了一个日期值,但是在我的图表上我看到了,在重绘后添加了ZERO点。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,看起来放在x值中的对象不是日期,尽管看起来如此。它实际上是一个字符串。 所以这会返回一个字符串:

Date("2017-11-27")

因此,highcharts不知道如何将其解释为日期时间,因为我告诉它在选项中执行日期时间。解决方案是:

moment("2017-11-27").ToDate()

这返回了一个正确的日期对象,并且highcharts能够解释。