无法获得系列高图

时间:2016-04-19 00:06:34

标签: javascript jquery highcharts

我使用highcharts制作一个包含多个系列的图表(19)。我希望每个系列都有多个点,所以它用第一组数据创建第一个系列,然后只为每个系列添加点:

 $(document).ready(function() {
      chart = new Highcharts.Chart({
        chart: {
          renderTo: 'container',
          defaultSeriesType: 'line',
          events: {
            load: function() {
              var rawArray = <%- dataArray %>;
              var array = {};
              var chart = this;
              for (var i = 0; i < rawArray.length; i++) {
                var entry = rawArray[i];
                var str = entry.timestamp.toString();
                var time = str.slice(0, -3);
                var array = [
                  [parseInt(time), entry.price]
                ];
                if (i < 18) {
                  $('#container').highcharts().addSeries({
                    name: entry.name,
                    id: entry.id,
                    data: array
                  });
                } else {
                  $('#container').highcharts().series[entry.id].addPoint(array, false, true);
                }
              }
            }
          }
        },
        title: {
          text: 'Title'
        },
        xAxis: {
          type: 'datetime',
          tickPixelInterval: 150
        },
        yAxis: {
          minPadding: 0.2,
          maxPadding: 0.2,
          title: {
            text: 'Value',
            margin: 80
          }
        }
      });
    });

所以前19个系列添加得很好但是在我的控制台中出现了这条消息:&#39; Uncaught TypeError:无法读取属性&#39; addPoint&#39;未定义的&#39;受到$('#container').highcharts().series[entry.id].addPoint(array, false, true);

的影响

我想知道你们是否有我的解决方案,我们真的很感激!

1 个答案:

答案 0 :(得分:2)

尝试https://jsfiddle.net/Cuchu/99x477sb/5/

 for (var i = 0; i < rawArray.length; i++) {
            var entry = rawArray[i];
            var id = entry.id;
            var str = entry.timestamp.toString();
            var time = str.slice(0, -3);
            var array = [[parseInt(time), entry.price]];
            var array_to_point = [parseInt(time), entry.price];
            console.log(array);
            if (i < 18) {
              $('#container').highcharts().addSeries({
                name: entry.name,
                id: entry.id,
                data: array
              });
            } else {
            $.each(this.series, function(i, v){
                serieId = chart.series[i].options.id;
              if(serieId == id) {
                chart.series[i].addPoint(array_to_point,false);
              }

                //chart.series[i].addPoint(series[serieId], false);
                });
            //console.log(this.series);
             //$('#container').highcharts().series[id].addPoint(array, false, true);
              //$('#container').highcharts().get(entry.name).addPoint(array, false, true);

            }
          }
          this.redraw(true);

我的英语更基本,但我试着说明一下。 当您设置id:entry.id时,系列的id在chart.series [i] .options.id中定义,i不是id,因为它是系列图的索引。

var array = [[parseInt(time), entry.price]];
var array_to_point = [parseInt(time), entry.price];

在第一次运行数组中定义数据serie = array(points)where points = array(time,value).. ok?然后在addpoint中,修改为添加点数据arra_to_point = [time,value] ..

在完成时,重绘图表..

我用Highcharts完成了很多工作,并且总是要查看元素的内容以获取脉冲