2014-08-28 86 views
2

我以列表的形式從c#web方法中檢索數據,我需要使用D3 JavaScript庫以折線圖的形式填充數據。我怎樣才能做到這一點?使用d3.js中的動態列表數據

如何在D3中使用列表數據,並在一個列表中使用日期時間格式,並在另一個列表中使用數值?

$.ajax({ 
url: "ServiceMessage.asmx/GetPostings", 
     type: "POST", 
     contentType:"application/json", 
     success: function (data) { 
      var myData = data.d; 
      var data1; 
      var data2; 
      alert(myData.length + " hellos"); 
      for (var i = 0; i < myData.length; i++) { 
       // $("#divMsg").append(myData[i].date + " " + myData[i].values); 
       data1[i] = myData[i].date; "</br>" 
        data2[i] = myData[i].values; "</br>" 
       $("#divMsg").append(data1[i]+""+data2[i]) 
      } 

如何使用data1 data2填充折線圖?

+0

查看[Mike Bostock提供的示例](http://bl.ocks.org/mbostock/raw/3883245/)。 – 2014-08-28 10:25:30

回答

2

你可以在這裏看看http://www.d3noob.org/2012/12/starting-with-basic-d3-line-graph.html

你的情況,因爲你已經在列表中有您的數據更加簡單。不要將它分成兩個數組,最好有一個列表[{date:...,value:...},{date:...,value:...} ...]

您必須初始化d3(如您所見,x軸有一個「時間」範圍,如果使用它,則可以使用d3.time.format(「%d-%b-%y」)解析日期。 ).parse功能):

var margin = {top: 30, right: 20, bottom: 30, left: 50}, 
width = 600 - margin.left - margin.right, 
height = 270 - margin.top - margin.bottom; 

var x = d3.time.scale().range([0, width]); 
var y = d3.scale.linear().range([height, 0]); 

var xAxis = d3.svg.axis().scale(x) 
    .orient("bottom").ticks(5); 

var yAxis = d3.svg.axis().scale(y) 
    .orient("left").ticks(5); 

/* ---------------------- This is your line --------------------- */ 
var valueline = d3.svg.line() 
    .x(function(d) { return x(d.date); }) 
    .y(function(d) { return y(d.value); }); 
/* -------------------------------------------------------------- */ 

var svg = d3.select("body") 
    .append("svg") 
     .attr("width", width + margin.left + margin.right) 
     .attr("height", height + margin.top + margin.bottom) 
    .append("g") 
     .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 

然後追加行(其中,數據是列表{日期:...,值:...}:

svg.append("path")  // Add the valueline path. 
    .attr("d", valueline(data)); 

svg.append("g")   // Add the X Axis 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + height + ")") 
    .call(xAxis); 

svg.append("g")   // Add the Y Axis 
    .attr("class", "y axis") 
    .call(yAxis); 

PS:我用「價值」在這裏,但在你使用「價值」的問題。

+0

我有日期時間的C#格式我如何解析?(26-08-2014 07:14:43)在這種格式 – chinna2580 2014-08-31 07:40:05

+0

哦,是的,你是對的,你必須解析。您必須將d3.time.format(...)。parse應用於數據列表中每個對象的date屬性:'data.forEach(function(d){d.time = d3.time.format(「% d-%m-%Y%H:%M:%S「)。parse(d.date)});'see [link](http://www.d3noob.org/2012/12/formatting-date -time-ON-d3js-graph.html) – 2014-08-31 10:33:16