2017-08-31 86 views
2

嗨,我是一個真正的JavaScript新手。我試圖將信息繪製到一張AMchart上,但是遇到了困難。 當我從軸突查詢中獲取數據時,該圖如下工作。AMchart繪製陣列的時間序列數據

var table = amberPoint.curVal.toObj(); 

顯示如下。

enter image description here

這一步是我在遇到困難的人。我按如下方式將兩個對象數據集提取到兩個數組中。

i=0; 
table.forEach(function(row) 
{ 

    var newVal; 


    newVal = row.v0; 
    foo[i] = [newVal]; 
    i++; 
}); 

j=0; 
table.forEach(function(row) 
{ 
    var time; 
    time = row.ts; 
    foo2[j] = [time]; 
    j++; 
}); 

現在我有兩個與原始對象具有相同數據的數組。

我想將這兩個數組轉換回AMchart可讀的對象。我這樣做如下。

var chartData = []; 
for(k = 0; k < foo.length-10; k++) { 
    chartData.push({ 
    "x": foo2[ k ], 
    "y": foo[ k ] 
    }); 
} 

不幸的是,圖表似乎沒有正確解釋日期「foo2」的數據。我得到以下結果。

enter image description here

我想,我需要做一些事來了「foo2的」數據,以便AMchart承認,這是一個時間序列。這是我的圖表代碼。

var chart = AmCharts.makeChart(this.view, { 
    "type": "serial", 

    "theme": "light", 
    "mouseWheelZoomEnabled":true, 
    "marginTop":0, 
    "marginRight": 80, 
    "dataProvider":chartData, 


    "valueAxes": [{ 
     "axisAlpha": 0, 
     "position": "left", 
     "title" : "" 

    }], 
    "graphs": [{ 
     "id":"g1", 

     "balloonText": "[[category]]<br><b><span style='font-size:14px;'>[[value]]</span></b>", 
     //"bullet": "round", 
     "bulletSize": 8, 
     "lineColor": "#d6ac15", 
     "lineThickness": 2, 
     "negativeLineColor": "#637bb6", 
     "type": "line", 
     "valueField": "y" 
    }], 
    "chartScrollbar": { 
     "graph":"g1", 

     "gridAlpha":0, 
     "color":"#888888", 
     "scrollbarHeight":55, 
     "backgroundAlpha":0, 
     "selectedBackgroundAlpha":0.1, 
     "selectedBackgroundColor":"#888888", 
     "graphFillAlpha":0, 
     "autoGridCount":true, 
     "selectedGraphFillAlpha":0, 
     "graphLineAlpha":0.2, 
     "graphLineColor":"#c2c2c2", 
     "selectedGraphLineColor":"#888888", 
     "selectedGraphLineAlpha":1 

    }, 
    "chartCursor": { 
     "categoryBalloonDateFormat": "hh", 
     "cursorAlpha": 0, 
     "valueLineEnabled":true, 
     "valueLineBalloonEnabled":true, 
     "valueLineAlpha":0.5, 

     "fullWidth":true 

    }, 
    "dataDateFormat": "YYYY/MM/DD JJ:NN:SS", 
    // "dataDateFormat": "YYYY", 
    "categoryField": "x", 
    "categoryAxis": { 
     "minPeriod": "hh", 
     "parseDates": true, 
     "minorGridAlpha": 0.1, 
     "title":"DATE", 
     "minorGridEnabled": true 
    }, 
    "export": { 
     "enabled": true 


    } 
}); 

chart.addListener("rendered", zoomChart); 
if(chart.zoomChart){ 
    chart.zoomChart(); 
} 

function zoomChart(){ 
    chart.zoomToIndexes(Math.round(chart.dataProvider.length * 0.4), Math.round(chart.dataProvider.length * 0.55)); 
} 

請幫忙。

+0

你可以顯示一個'foo2'值是怎麼樣的? – Darlesson

+0

foo2的值看起來像下面 – Amekp

+0

2017年8月17日@ 5:30上午 – Amekp

回答

0

dataDateFormat需要匹配日期字符串格式。

請點擊此處查看選項的格式:http://www.amcharts.com/kbase/formatting-dates/

請注意,有星號(*)的格式都不在dataDateFormat支持。這意味着您需要將值的格式更改爲"2017/08/17 05:30:00"之類的內容。這將匹配您當前的dataDateFormat"YYYY/MM/DD JJ:NN:SS"

+0

感謝您的回答。你能解釋爲什麼日期格式在使用原始對象的數據時工作,var table = amberPoint.curVal.toObj();但在對象數組對象轉換後不起作用? – Amekp

+0

amberPoint.curVal.toObj()的值如何顯示? – Darlesson

0

我會在這裏發佈,以便我可以發佈圖像。這是

的數據
amberPoint.curVal.toObj() 

正在被拉出。

enter image description here

enter image description here

這些都是兩個TS和V0

0

其實我想通了這一點,我不得不剛刪除的dataDateFormat線。

謝謝!