使用d3.nest使用JavaScript拉取值以获取力向图

时间:2018-12-03 18:37:01

标签: javascript d3.js

我正在尝试向我的强制D3图添加一些摘要统计信息。我可以使用console.log(d)看到该数组,但是当我尝试使用最简单的javascript时,似乎无法从数组中提取值。以下是相关代码:

function fade(opacity) {
return d => {
  node.style('stroke-opacity', function (o) {
    const thisOpacity = isConnected(d, o) ? 1 : opacity;

    console.log(d)

     var new_data = d3.nest()
      .key(function(j) { return j.group;})
      .rollup(function(j) {
       return d3.sum(j, function(g) {return g.contribution_total; });
      }).map(d); //.entries(d);
      //new_data
      console.log(new_data)

      var expensesByName = d3.nest()
      .key(function(g) { return g.group; })
      .entries(d);
      //.forEach(node);
        console.log(expensesByName )

    var contributionsByName = d3.nest()
      .key(function(g) { return g.contribution_total; })
      .entries(d);
      //.forEach(node);
    //console.log(contributionsByName)

这里是现场尝试的住所:http://people.ischool.berkeley.edu/~jennifer.p/capstone/slider/add_winner_try1.html

我所有的console.log()尝试(除了console.log(d))都返回一个空数组。查看图片:enter image description here

最终,我试图按组(民主党/共和党)显示总捐款额,然后我想计算一个“获胜者”百分比(#个节点为“ W”,而“#为空”),但现在我真的需要帮助来访问数据周期。我去了这几个小时,看起来很简单,任何想法都值得赞赏。 TIA!

1 个答案:

答案 0 :(得分:0)

您需要收集不透明度回调内部连接的节点,并在设置后使用列表计算d3.next

  function fade(opacity) {
    return d => {
      var connectedNodes = [];
      node.style('opacity', function (o) {
        var connected = isConnected(d, o);
        if (connected) { connectedNodes.push(d); }
        return connected ? 1 : opacity;
      });
      var new_data = d3.nest()
          .key(function(j) { return j.group;})
          .rollup(function(j) {
            return d3.sum(j, function(g) {return g.contribution_total; });
          }).entries(connectedNodes);
      console.log('new_data', new_data);
      link.style('opacity', o => (o.source === d || o.target === d ? 1 : opacity));
    };
  }

当您同时拥有click处理程序时,为什么还要使用fade(1)的{​​{1}}处理程序?

releasenode