0

我有以下生成的 JavaScript 代码来显示带有 HighCharts 的图表:

<script type="text/javascript">

var highchartsOptions   = Highcharts.setOptions(Highcharts.theme);
var TaskChart; // Chart-Objekt    
var TaskDuration          = new Array();    
// Save starting points to javascript variables for HighCharts
var startingUTC = 1288102643364;
TaskDuration =  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,216,216,206,206];
for(var i = 0; i < TaskDuration.length; i++) {
    if(TaskDuration[i] == 0) {
        TaskDuration[i] = null;
    }
}
</script>
<script type="text/javascript">
$j(document).ready(function() { 
    TaskChart = new Highcharts.Chart({
    credits: {
            enabled: false
    },
    chart: {
      renderTo: "chart01",
      defaultSeriesType: 'area',
      zoomType: 'x',
      spacingBottom: 250
    },
    title: {
      text: "Task Duration"
    },
    xAxis: {
        type: 'datetime',
        dateTimeLabelFormats: {
            week: '%e. %b %Y'   
        },
        offset: 10,
        startOnTick: true,
        maxZoom: 7 * 24 * 3600000 // seven days
    },
    yAxis: {
      title: {
        text: "Duration"
      }
    },
    tooltip: {
        formatter: function() {
            return '<b>'+ this.series.name +'</b><br/>';            
        }
    },
    plotOptions: {
        area: { 
           stacking: 'normal',
           lineColor: '#666666',
           lineWidth: 1,
           marker: {
              lineWidth: 1,
              lineColor: '#666666'
           }
        }
     },
    series: [
    {
        name: 'Duration',
        pointStart: startingUTC,
        pointInterval: 24*60*60*1000, 
        data: TaskDuration
    }]
  });
});
</script>

现在的问题是我想从 TaskDuration 系列数组的开头删除所有“0”值。

我尝试将数组中的值设置为“null”:

for(var i = 0; i < TaskDuration.length; i++) {
    if(TaskDuration[i] == 0) {
        TaskDuration[i] = null;
    }
}

但 Highcharts 仍然在图表中显示值。

如何防止这种行为?

我还尝试从数组中删除所有值,直到一个不是“0”的值。但是使用这种方法,“startingUTC”是错误的。也许我还必须重新计算这个值......

问候, 桑德罗

4

2 回答 2

0

您需要删除不设置 null 的元素,使用它从数组中删除零元素:

var myArray=[];

for(var i = 0; i < TaskDuration.length; i++) {
    if(TaskDuration[i] != 0) {
       myArray.push(TaskDuration[i]);
    }
}

工作JSfiddle

于 2013-01-29T10:11:42.673 回答
0

问题是您正在使用pointStartand pointInterval
PointInterval将忽略您的空点并将点添加到yAxis.
所以,删除它。

series: [{
    name: 'Duration', 
    data: TaskDuration
}]
于 2013-01-29T18:57:48.747 回答