2016-03-17 41 views
0

我有一系列存儲JSON objects(下)經由angular送出我html頁, 我已經越來越從角出的信息到我的d3.js圖。(這個問題我想我需要從JSON將它們轉換爲正常值 爲我的x軸數據被繪製)發送JSON來d3js圖

{ __v: 0, temp: 328, _id: 56e9417d6a8a307819c3e598 }, 
{ __v: 0, temp: 328, _id: 56e9417d6a8a307819c3e599 }, 
{ __v: 0, temp: 328, _id: 56e9417d6a8a307819c3e600 }, 
{ __v: 0, temp: 328, _id: 56e941826a8a307819c3e59a } 

下面$http請求從app.js接收的數據。 的y axis是銷售(對象的值)和x axis是小時(從數據庫條目以顯示的量)

$http.get('/solution-two/data3').success(function (data) { 
      var hour=$scope.salesData3.length+1; 
      var sales= data; 
      $scope.salesData3.push({hour: hour, sales:sales}); 
     }); 

我有陣列出發以與陣列它獲取在發送到HTTP請求的信息

$scope.salesData3=[ 
{hour: 1,sales: 280}]; 

salesData3是我d3.js圖形的名稱,因此,在總結,我認爲我需要defice我的時間變量的長度與數據庫條目 和銷售變量需要的長度,以接受來自DA的JSON對象tabase,我是否正確?

感謝閱讀

回答

0

如果我瞭解清楚你的問題,你正在尋找您可以在JSON數據發送到D3中的結構?

如果您正在繪製銷售與小時的折線圖,則不需要檢查小時的長度。相反,D3有檢測時間格式的方法,可以用它來將它分配給X軸。

x = d3.scale.linear().range([0, width]); 
y = d3.time.scale().range([height, 0]); 
// Set the X axis domain with time 
y.domain(d3.extent(salesData3, function (d) { 
      return d.sales; 
     })); 
valueLine = d3.svg.line() 
      .x(function (d) { 
       return x(d.hour); 
      }) 
      .y(function (d) { 
       return y(d.sales); 
      }); 
svg.append("path") 
     .attr("class", "CLASS_NAME") 
     .attr("id", curveId) 
     .attr("d", valueLine(salesData3)); 

此鏈接對如何使用JSON數組,並將其傳遞作爲數據的x和y軸的示例https://www.dashingd3js.com/using-json-to-simplify-code

尼斯鏈路這解釋了格式化時間的任務http://www.d3noob.org/2012/12/formatting-date-time-on-d3js-graph.html & http://jsfiddle.net/robdodson/KWRxW/

+0

感謝評論和信息,這是偉大的東西。我正在使用其他實時信息的圖表,所以我希望將角色控制器中的json更改爲var值。和in一樣,將數據從json數組中提取出來,然後推入銷售var,然後在d3上繪製圖表。 –

+0

當D3本地支持陣列數據結構時,恕我直言,可以傳遞一個數組而不是迭代數組(將數據從json數組中拉出來),然後重用該值來構建圖。 – Srikanta