Highcharts系列区域在x轴上不使用UTC日期值

时间:2017-10-27 05:09:21

标签: javascript arrays multidimensional-array highcharts highstock

我试图在高点线系列图中用虚线连接零点上的点。

我能够让它适用于数据数组中x值的非日期值。 Fiddle 1

但是,当数据数组的x值为UTC日期值时,系列区域未按预期工作。 Fiddle 2

就像我写这个问题一样,我意识到这里的问题是遍历buildZones函数中的多维数组。

我该如何解决这个问题?

$(function() {

var data1 = [[1505715244000,84],[1505792275000,96],[1507004151000,105],[1507004493000,null],[1507004824000,null],[1507004912000,101],[1507180353000,90],[1507261620000,109],[1507262417000,100]]


 var seriesdata = [{type: 'spline', name: "ABC", data: data1,zones: null,connectNulls: true,zoneAxis: 'x', yAxis: 0,

                    showInLegend: false
                };

                seriesdata[0].zones=buildZones(data1);

  function buildZones(data) {
    var zones = [],
        i = -1, len = data.length, current, previous, dashStyle, value;

    while (data[++i][1] === null);
    zones.push({
      value: i
    });

    while (++i < len) {
      previous = data[i - 1][1];
      current = data[i][1];
      dashStyle = '';

      if (previous !== null && current === null) {
        dashStyle = 'solid';
        value = i - 1;
      } else if (previous === null && current !== null) {
        dashStyle = 'dot';
        value = i;
      }

      if (dashStyle) {
        zones.push({
          dashStyle: dashStyle,
          value: value
        });
      }
    }
    console.log(zones)
    return zones;
  }


  var chart = Highcharts.stockChart('container', {

   /* chart: {
      defaultSeriesType: 'spline',
      renderTo: 'container'
    },*/


    plotOptions: {
      series: {
        marker: {
          enabled: true
        }
      }
    },
    series: [seriesdata[0]]

  });

});

1 个答案:

答案 0 :(得分:0)

我能够弄清楚。我只需要更改推送值

function buildZones(data) {
var zones = [],
    i = -1, len = data.length, current, previous, dashStyle, value;

while (data[++i][1] === null);
zones.push({
  value:data[i][0]
});

while (++i < len) {
  previous = data[i - 1][1];
  current = data[i][1];
  dashStyle = '';

  if (previous !== null && current === null) {
    dashStyle = 'solid';
    value = data[i - 1][0];
  } else if (previous === null && current !== null) {
    dashStyle = 'dot';
    value = data[i][0];
  }

  if (dashStyle) {
    zones.push({
      dashStyle: dashStyle,
      value: value
    });
  }
}
console.log(zones)
return zones;

}