javascript - 使用 d3.js 的 Pack Layout 节点中的 NaN x 和 y 值

标签 javascript d3.js data-visualization circle-pack

我正在尝试使用 d3.js 制作圆形包装图。问题是节点在 x 和 y 属性中有 NaN 值,所以所有的圆都有 transform="translate(NaN,NaN)"

Json 数据:

 var data = {
     "name": "flare",
     "children": [
      {
       "name": "analytics",
       "children": [
        {
         "name": "cluster",
         "children": [
          {"name": "AgglomerativeCluster", "size": 3938},
          {"name": "CommunityStructure", "size": 3812},
         ]
        },
        {
         "name": "graph",
         "children": [
          {"name": "BetweennessCentrality", "size": 3534}
         ]
        }]
    }]
    };

脚本:

    var diameter = 200;
    var w = 500;
    var h = 400;

    var pack = d3.layout.pack()
                .size(500,400);

    var svg = d3.selectAll("body").append("svg")
                .attr({width:w,height:h})
                .append("g").attr("transform","translate("+w/2+","+h/2+")");

    var nodes = pack.nodes(data);

    var circles = svg.selectAll("circle")
                    .data(nodes)
                    .enter()
                    .append("circle")
                        .attr("r",function(d){return d})
                        .attr("transform", function(d){return "translate("+d.x+","+d.y+")";});

谁能解释为什么 X 和 Y 节点值为 NaN?我用数据和我写的脚本创建了一个 jsFiddle:http://jsfiddle.net/nm9Lozn2/2/

最佳答案

我认为您需要将传递给 pack.size 的参数更改为数组。并添加 .value 因为您的数据没有值属性:

https://github.com/mbostock/d3/wiki/Pack-Layout#value

If value is specified, sets the value accessor to the specified function. If value is not specified, returns the current value accessor, which assumes that the input data is an object with a numeric value attribute:

所以:

var pack = d3.layout.pack()
            .size(500,400);

到:

var pack = d3.layout.pack()
            .size([500,400])
            .value(function(d) { return d.size; });

关于javascript - 使用 d3.js 的 Pack Layout 节点中的 NaN x 和 y 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644629/

相关文章:

javascript - chrome javascript事件处理问题

javascript - D3 折线图,不能用序数刻度编辑刻度数吗?

javascript - JSON 不显示字符串传递的所有值

javascript - windows.resize() 不起作用

wpf - 如何停止在 WPF DataVisualization 图表中的 Y 轴上显示小数点

python - 从预训练模型中可视化样本的优缺点

javascript - 如何在调用函数之前将参数传递给函数

javascript - d3js如何选择我当前正在处理的元素

javascript - 在单击的文本元素上绘制箭头?

r - 如何对有向图进行排序和可视化?