无法获取系列柱状图

Cannot get a series highchart

本文关键字:系列 获取      更新时间:2023-09-26

我正在使用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个系列添加得很好,但在我的控制台中有这样的消息:"未捕获的类型错误:无法读取未定义的属性"addPoint"引用到$('#container').highcharts().series[entry.id].addPoint(array, false, true);

我想知道,如果你们能为我找到解决方案,我将不胜感激!

尝试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];

在第一次运行中,数组定义数据序列=数组(点),其中点=数组(时间,值)。。好啊然后在addpoint中,针对数据的addpoint进行修改array_to_point=[时间,值]。。

最后,重新绘制图形。。

我已经用Highcharts做了很多工作,并且总是必须查看元素的内容才能获取脉冲