2013-12-24 2 views
2

У меня есть функция d3.nest(), которая дает мне результат ниже.d3 - Показать только значения, используя 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 

Мое требование - в результате я не хочу date и values этикетки быть появились. Мне нужны только значения столбцов date и values.

Пример 1385856000000, 10.

Есть ли вероятность, что я смогу получить квадратные скобки вместо фигурных скобок в списке values вот так [ 1385856000000, 10 ] вместо { 1385856000000, 10 }.

Помощь будет очень благодарна.

ответ

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, ' ')); 
    }) 
+0

Полезно знать об этом. +1 голос – VividD

Смежные вопросы