2017-04-26 50 views
0

我通過從外部JSON文件(temp.json)獲取實時數據繪製了nvd3圖。這是我的代碼。但我得到「TypeError:e.values未定義」錯誤。TypeError:e.values在nvd3圖中未定義

d3.json("temp.json", function(data) { 

    data.forEach(function(d) { 
     d.timestamp = +d.timestamp; 
     d.timestamp3 = +d.timestamp3; 

    }); 
nv.addGraph(function(){ 
var chart = nv.models.cumulativeLineChart() 
       .margin({left: 100}) 
       .x(function(d){return d.timestamp}) 
       .y(function(d){return d.timestamp3}) 
       .color(d3.scale.category10().range()) 
       .useInteractiveGuideline(true) 


chart.xAxis 
    .axisLabel('Time in ns') 
    .tickFormat(d3.format("")); 

    chart.yAxis 
     .axisLabel('Timestamp in ns') 
     .tickFormat(d3.format("")); 

    d3.select('#container svg') 
     .datum(data) 
     .call(chart); 

    nv.utils.windowResize(chart.update); 



    return chart; 
}); 
}); 

我在temp.json數據:

[{ 
     "temperSensorData": "26.183021749996204", 
     "temperSensorUnit": "celsius", 
     "timestamp": "1370718629809", 
     "timestamp2": "1370718629900", 
     "timestamp3": "1370718629945" 
    }, 
    { 
     "temperSensorData": "26.183021749996204", 
     "temperSensorUnit": "celsius", 
     "timestamp": "1370718630000", 
     "timestamp2": "1370718631000", 
     "timestamp3": "1370718631500" 
    }, 
    { 
     "temperSensorData": "26.183021749996204", 
     "temperSensorUnit": "celsius", 
     "timestamp": "1370718632000", 
     "timestamp2": "1370718632500", 
     "timestamp3": "1370718632600" 
    }, 
    { 
     "temperSensorData": "26.183021749996204", 
     "temperSensorUnit": "celsius", 
     "timestamp": "1370718633000", 
     "timestamp2": "1370718633500", 
     "timestamp3": "1370718634000" 
    }, 
    { 
     "temperSensorData": "26.183021749996204", 
     "temperSensorUnit": "celsius", 
     "timestamp": "1370718635000", 
     "timestamp2": "1370718635500", 
     "timestamp3": "1370718636000" 
    } 
] 

什麼錯誤?以及如何獲得時間戳vs時間戳3的情節?請幫幫我。

回答

1

NVD3預計數據將在此格式:

[ 
    { 
    key: 'my dataset', 
    values: [...] 
    } 
] 

你可以這樣做:

const processedData = [{ 
    key: 'my dataset', 
    values: data 
}]; 

d3.select('#container svg') 
    .datum(processedData) 
    .call(chart); 
+0

我不能用當前的JSON文件(temp.json)?這不是一個有效的JSON格式來繪製nvd3嗎? –

+0

不需要。您需要遵循NVD3格式。 – jeznag

+0

所以我應該使用這樣:[{ 「鑰匙」: 「時間戳」, 「值」:[1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809,1370718629809, 1370718629809] },\t ] –