【问题标题】:d3: timeseries from datad3:来自数据的时间序列
【发布时间】:2013-03-24 09:34:07
【问题描述】:

我想通过在函数中传递字典来创建时间序列。示例代码如下:

d3.csv("data.csv", function(error, data) {
  data.forEach(function(d) {
    d.date = parseDate(d.date);
    d.close = +d.close;
  });

  x.domain(d3.extent(data, function(d) { return d.date; }));
  y.domain(d3.extent(data, function(d) { return d.close; }));
  //etc...

我要做的是将其转换为一个函数,该函数接受一个带有日期和关闭行(数据)的对象并由此生成图表,即

    function makeGraph(timeseriesdata){
        // create chart above from data
        // what format??
    }

【问题讨论】:

    标签: d3.js time-series


    【解决方案1】:

    d3.csv 为您完成了大部分繁重的工作。它需要一个 csv 并将其转换为一个对象数组,每个对象对应于 csv 的一行。

    https://github.com/mbostock/d3/wiki/CSV 有一些例子。

    调用 d3.csv 并用 parseDate 清理数据后,您可以将数据传递给 makeGraph。

    d3.csv("data.csv", function(error, data) {
      data.forEach(function(d) {
       d.date = parseDate(d.date);
       d.close = +d.close;
      });
      makeGraph(data);
    });
    
    function makeGraph(timeseriesdata){
    
    }
    

    【讨论】:

      【解决方案2】:

      要创建一个给定字典的行路径,请使用字典创建一个列表,例如:

      var parseDate = d3.time.format("%Y-%m-%d").parse;   
      
       var lineData = [ { "date": "2013-04-01",   "close": 5},  { "date": "2013-03-28",  "close": 20},
                        { "date": "2013-03-27",  "close": 10}, { "date": "2013-03-26",  "close": 40},
                        { "date": "2013-03-25",  "close": 5},  { "date": "2013-03-24", "close": 60}];
      
        lineData.forEach(function(d,i) {     
          d.date = parseDate(d.date);
          d.close = +d.close;    
        });
      
      makeGraph(lineData);
      

      【讨论】:

        猜你喜欢
        • 2014-02-11
        • 2016-02-01
        • 2017-09-29
        • 2016-11-15
        • 2020-11-08
        • 2019-01-28
        • 1970-01-01
        • 1970-01-01
        • 2020-06-16
        相关资源
        最近更新 更多