2013-11-07 4 views
1

Я просто хотел добавить две новые переменные в следующие данные, то есть slope и intersect. data.csv содержит только перечисленные столбцы - Levels, X, Y и Size. Я хотел добавить две новые переменные, упомянутые выше в приведенных ниже данных.d3.nest добавление дополнительных переменных

данных:

 

    [ 
      { 
      "key": "Level1", 
      "values": [ 
       { 
       "x": 118, 
       "y": 106, 
       "size": 1.113207547 
       }, 
       { 
       "x": 111, 
       "y": 137, 
       "size": 0.810218978 
       }, 
       { 
       "x": 144, 
       "y": 195, 
       "size": 0.738461538 
       }, 
       { 
       "x": 116, 
       "y": 129, 
       "size": 0.899224806 
       }, 
       { 
       "x": 117, 
       "y": 119, 
       "size": 0.983193277 
       }, 
       { 
       "x": 145, 
       "y": 122, 
       "size": 1.18852459 
       } 
      ], 
      "slope": 0.52289599949494, 
      "intercept": 0.2795214697252959 
      }, 
      { 
      "key": "Level2", 
      "values": [ 
       { 
       "x": 172, 
       "y": 193, 
       "size": 0.89119171 
       }, 
       { 
       "x": 138, 
       "y": 114, 
       "size": 1.210526316 
       }, 
       { 
       "x": 106, 
       "y": 189, 
       "size": 0.560846561 
       }, 
       { 
       "x": 123, 
       "y": 141, 
       "size": 0.872340426 
       }, 
       { 
       "x": 129, 
       "y": 110, 
       "size": 1.172727273 
       }, 
       { 
       "x": 162, 
       "y": 198, 
       "size": 0.818181818 
       } 
      ], 
      "slope": 0.52289599949494, 
      "intercept": 0.2795214697252959 
      }, 
      { 
      "key": "Level3", 
      "values": [ 
       { 
       "x": 191, 
       "y": 104, 
       "size": 1.836538462 
       }, 
       { 
       "x": 177, 
       "y": 186, 
       "size": 0.951612903 
       }, 
       { 
       "x": 106, 
       "y": 140, 
       "size": 0.757142857 
       }, 
       { 
       "x": 131, 
       "y": 161, 
       "size": 0.813664596 
       }, 
       { 
       "x": 111, 
       "y": 128, 
       "size": 0.8671875 
       }, 
       { 
       "x": 149, 
       "y": 122, 
       "size": 1.221311475 
       }, 
       { 
       "x": 200, 
       "y": 126, 
       "size": 1.587301587 
       } 
      ], 
      "slope": 0.52289599949494, 
      "intercept": 0.2795214697252959 
      } 
     ] 

Пытались с функцией ниже:

 

    d3.csv("data.csv", function(data) { 

        data.forEach(function(d) { 
         d.x = +d.x 
         d.y = +d.y 
         d.size = +d.size 
        }) 

        //var type = ['Basic Phone', 'Featured Phone', 'Smart Phone'] 

        var nest = d3.nest() 
           .key(function(d) {return d.type;}) 
           .rollup(function(v) {return v.map(function(d) {delete d.type; return d; d.slope = Math.random(), d.intersent = Math.random()})}) 
           .entries(data); 

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

ответ

0

После получения на выходе из nest.entries(), вы можете перебирать этот массив и добавить свои свойства:

nest.forEach(function (d) { 
    d.slope = Math.random(); 
    d.intercept = Math.random(); 
}) 
+0

Удивительный! Большое спасибо. Это сработало для меня. Большое спасибо. –

1
function(d) {delete d.type; return d; d.slope = Math.random(), d.intersent = Math.random()} 

эквивалентно

function(d) {delete d.type; return d;} 

Что следует за возвратом не может быть выполнено. Попробуйте

function(d) {delete d.type; d.slope = Math.random(), d.intersent = Math.random(); return d; } 
+0

Спасибо за ответ. Я не хочу, чтобы это добавлялось вместе с 'x' &' y'. Я бы хотел, чтобы это появилось только один раз для каждого уровня. Формат данных уже вставлен выше. –

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