D3 - d3.nest中需要帮助

时间:2013-11-06 13:14:15

标签: javascript d3.js nvd3.js

我有一个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 nest = d3.nest()
                            .key(function(d) {return d.type;})
                            .rollup(function(v) {return v.map(function(d) {return d})})
                            .entries(data);

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

1 个答案:

答案 0 :(得分:0)

如果您不希望type出现在返回的数组中,则可以delete执行rollUp

.rollUp(function (v) { return v.map(function (d) { delete d.type; return d; })

请注意,它也会从原始数据集中删除'type'。如果您不希望这种情况发生,那么$.extend或以其他方式克隆rollUp函数中的数据。