2013-08-05 85 views
1

我開始使用Highcharts JS庫,並且在特定日期和時間啓動我的圖表遇到了一些麻煩。圖表是流量計圖表,所以我的X值是日期/時間(EPOCH格式),y值是量具高度。開始時間系列Highcharts在特定日期/時間繪製

我希望我的圖表覆蓋從今天的日期前兩天午夜開始的3天。我正在嘗試使用'pointStart'來建立我的圖表的x值的開始,但它並不工作。我得到我的三天時間跨度,但起點不是所需的午夜。

我在做什麼錯?這裏是我的全highcharts代碼:

$(function() { 
    $('#gChart').highcharts({ 
     chart: { 
      type: 'spline', 
      margin: [20,40,50,60] 
     }, 
     legend: { 
      enabled: false 
     }, 
     title: { 
      text: null 
     }, 
     xAxis: { 
      title: { 
       text: 'Date', 
       style: { 
        color: 'black', 
        fontWeight: 'bold' 
       } 
      },   
      type: 'datetime', 
      gridLineWidth: 1, 
      lineWidth: 1, 
      lineColor: 'black', 
      labels: { 
       formatter: function() { 
        var curVal = this.value; 
        var dt = new Date(); 
        theDate = new Date(eval(eval(curVal + 28800) * 1000)); 

        if (theDate.toString('h tt') == "0 AM") { 
         var t = theDate.toString('M/d/yyyy'); 
        } else { 
         var t = theDate.toString('htt'); 
        } 
        return t; 

       }, 
       style: { 
        color: 'black' 
       } 
      }, 
      startOnTick: true, 
      endOnTick: true, 
      gridLineColor: '#222', 
      tickInterval: 86400, 
      minRange: 259200, 
      minorGridLineColor: 'red', 
      startOnTick: true, 
      plotlines: [{ 
       color: 'black', 
       label: { 
        text: 'Last Update', 
        align: 'Right', 
        style: { 
         color: 'black', 
         fontWeight: 'bold', 
        } 
       }, 
       value: theData[theData.length-1].x, 
       width: 1      
      }] 
     }, 
     yAxis: { 
      title: { 
       text: 'Stage (Ft)', 
       style: { 
        color: 'black', 
        fontWeight: 'bold' 
       } 
      }, 
      lineWidth: 1, 
      lineColor: 'black', 
      min: chartProps["lowGraph"], 
      max: chartProps["highGraph"], 
      minorGridLineWidth: 0, 
      gridLineWidth: 1, 
      alternateGridColor: null, 
      startOnTick: true, 
      plotLines: [{ // Flood Stage 2 
       value: chartProps["floodPhase2"], 
       dashStyle: 'Dash', 
       color: '#FFDC14', //Yellow 
       width: '4', 
       label: { 
        text: 'FLOOD STAGE 2', 
        align: 'center', 
        style: { 
         color: '#FFDC14', //Yelow 
         fontWeight: 'bold', 
         fontSize: '10pt' 
        } 
       } 
      }, { // Flood Stage 3 
       value: chartProps["floodPhase3"], 
       dashStyle: 'Dash',     
       color: '#FFA500', 
       width: '4', 
       label: { 
        text: 'FLOOD STAGE 3', 
        align: 'center', 
        style: { 
         color: '#FFA500', 
         fontWeight: 'bold', 
         fontSize: '10pt' 
        } 
       } 
      }, { // Flood Stage 4 
       value: chartProps["floodPhase4"], 
       dashStyle: 'Dash',     
       color: 'red', 
       width: '4', 
       label: { 
        text: 'FLOOD STAGE 4', 
        align: 'center', 
        style: { 
         color: 'red', 
         fontWeight: 'bold', 
         fontSize: '10pt' 
        } 
       } 
      }] 
     }, 
     tooltip: { 
      valueSuffix: ' ft', 
      formatter: function() { 
       var curVal = this.x; 
       var dt = new Date(); 
       theDate = new Date(eval(eval(curVal + 28800) * 1000)); 
       var d = theDate.toString('M/d/yyyy'); 
       if (theDate.toString('h') == "0") { 
        var t = "12:" + theDate.toString('mm tt'); 
       } else { 
        var t = theDate.toString('h:mm tt'); 
       } 
       theString = d + ' @ ' + t + '<br><b>Gage Height: ' + this.y + ' Ft</b>'; 
       return theString; 
      } 
     }, 
     plotOptions: { 
      spline: { 
       lineWidth: 2, 
       states: { 
        hover: { 
         lineWidth: 2 
        } 
       }, 
       marker: { 
        enabled: false 
       }, 
       pointInterval: 900, // 5 minutes 
       pointStart: new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()-2,0,0,0,0) 
      } 
     }, 
     series: [{ 
      name: 'Gage Height', 
      data: theData 
     }] 
     , 
     navigation: { 
      menuItemStyle: { 
       fontSize: '10px' 
      } 
     } 
    }); 
}); 
+0

我自己總是遇到麻煩。您可能正在尋找setExtremes函數,這是一個外部函數(不知道爲什麼)。 –

+0

檢查[本示例](http://jsfiddle.net/gbcLC/1/)事件:load:並告訴我們結果如何。 (第36行) –

+0

pointStart應該是時間戳,而不是日期對象。在末尾添加.getTime()。另外,嘗試設置useUTC:false。 –

回答

0

事實證明,我不得不多事情在進行這阻止圖表出現我想要的方式。首先,當您爲統計圖的座標軸指定dateTime類型時,Highcharts假定日期信息以毫秒Epoch格式表示。我的數據是格式,這是我需要糾正的一件事。

第二個問題是我的數據來源忽略夏令時(因此小時班)。一旦我解釋了這兩個問題,我的圖表最終就會出現。

相關問題