d3 - 使用d3.nest()仅显示值

时间:2013-12-24 06:46:03

标签: javascript d3.js nvd3.js

我有一个d3.nest()函数,它给出了以下结果。

[
  {
    "key": "one",
    "values": [
      {
        "date": 1385856000000,
        "values": 10
      },
      {
        "date": 1385942400000,
        "values": 20
      },
      {
        "date": 1386028800000,
        "values": 10
      },
      {
        "date": 1386115200000,
        "values": 17
      },
      {
        "date": 1386201600000,
        "values": 15
      }
    ]
  },
  {
    "key": "two",
    "values": [
      {
        "date": 1385856000000,
        "values": 18
      },
      {
        "date": 1385942400000,
        "values": 13
      },
      {
        "date": 1386028800000,
        "values": 18
      },
      {
        "date": 1386115200000,
        "values": 24
      },
      {
        "date": 1386201600000,
        "values": 26
      }
    ]
  },
  {
    "key": "three",
    "values": [
      {
        "date": 1385856000000,
        "values": 19
      },
      {
        "date": 1385942400000,
        "values": 22
      },
      {
        "date": 1386028800000,
        "values": 17
      },
      {
        "date": 1386115200000,
        "values": 16
      },
      {
        "date": 1386201600000,
        "values": 12
      }
    ]
  },
  {
    "key": "four",
    "values": [
      {
        "date": 1385856000000,
        "values": 35
      },
      {
        "date": 1385942400000,
        "values": 16
      },
      {
        "date": 1386028800000,
        "values": 18
      },
      {
        "date": 1386115200000,
        "values": 11
      },
      {
        "date": 1386201600000,
        "values": 10
      }
    ]
  }
]

功能:

d3.csv('data.csv', function(data){
        data.forEach(function(d) {
            d.date = Date.parse(d.date)
            d.values = +d.values
        })

        var nest = d3.nest()
                    .key(function(d) { return d.label; })
                    .rollup(function (v) { return v.map(function (d) { delete d.label; return d; })})
                    .entries(data)

        d3.select('body').append('pre')
               .text(JSON.stringify(nest, null, '  '));
    })

数据:

label,date,values
one,2013-12-01,10
one,2013-12-02,20
one,2013-12-03,10
one,2013-12-04,17
one,2013-12-05,15
two,2013-12-01,18
two,2013-12-02,13
two,2013-12-03,18
two,2013-12-04,24
two,2013-12-05,26
three,2013-12-01,19
three,2013-12-02,22
three,2013-12-03,17
three,2013-12-04,16
three,2013-12-05,12
four,2013-12-01,35
four,2013-12-02,16
four,2013-12-03,18
four,2013-12-04,11
four,2013-12-05,10

我的要求是 - 在结果中我不希望出现datevalues标签。我只希望显示datevalues列的值。

此示例1385856000000, 10

我是否有可能在values列表中使用方括号而不是大括号,而不是[ 1385856000000, 10 ]而不是{ 1385856000000, 10 }

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

我自己找到了答案。

下面的功能给了我结果。

d3.csv('data.csv', function(data){
        data.forEach(function(d) {
            d.date = Date.parse(d.date)
            d.values = +d.values
        })

        var nest = d3.nest()
                    .key(function(d) { return d.label; })
                    .rollup(function (v) { return v.map(function (d) { delete d.label; return [d.date, d.values]; })})
                    .entries(data)

        d3.select('body').append('pre')
               .text(JSON.stringify(nest, null, '  '));
    })