d3.js强制图表 - 图像/节点链接和动画

时间:2014-03-09 22:26:25

标签: javascript d3.js charts force-layout

我增强了力图以比较两个配置文件。我试图让主节点拍摄图像

http://jsfiddle.net/LsMZp/5/

  • 如何让图像集中对齐(正确调整大小),并从json字符串中更加动态地传递缩略图数据。
  • 如果某人有共同的兴趣 - 是否有更好的处理方式 - 如果信息重复,则会形成一个链接,但游牧节点仍然保持不变并取消链接。
  • 还有一种方法可以在应用程序中提供动作,因此它永远不会完全解决

https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSTzjaQlkAJswpiRZByvgsb3CVrfNNLLwjFHMrkZ_bzdPOWdxDE2Q - 这是我用作模拟的图像。

enter image description here

    var circle = svg.append("svg:g")
.selectAll("circle")
.data(force.nodes())
.enter()
.append("svg:circle").attr("r", function(d) {
                    return getRadius(d);
                }).style("fill", function(d) {
                    if(d.group == "User"){
                         return "url(#img1)"; 
                    }else{
                        return color(d.group);
                    }
                }).call(force.drag);

                if (options.nodeLabel) {
                    circle.append("title").text(function(d) {
                        return d[options.nodeLabel];
                    });
                }

                if (options.linkName) {
                    path.append("title").text(function(d) {
                        return d[options.linkName];
                    });
                }

2 个答案:

答案 0 :(得分:1)

我已经增强了系统以获取一系列用户信息。然后用它来构建节点。

* 最新代码http://jsfiddle.net/LsMZp/49/ *

http://jsfiddle.net/LsMZp/26/

这里剩下的问题。

  • 需要删除nomad节点 - 如果用户共享相同的兴趣 - 他们按预期链接 - 但这导致一个额外的节点 - 有没有办法在节点构建期间清除它 - 或者应该在渲染之前删除重复的nodeId?
  • 用户图像似乎在象限中分割,好像它们没有正确居中,不知道为什么这里是代码

x和y设置为0.

 $.each(userData, function( index, value ) {
        var defs = patternsSvg.append('svg:defs');
                    defs.append('svg:pattern')
                        .attr('id', "--"+index+"-"+value.userName.toLowerCase())
                        .attr('patternUnits', 'userSpaceOnUse')
                        .attr('width', 100)
                        .attr('height',100)
                        .append('svg:image')
                        .attr('xlink:href', value.userImage)
                        .attr('x', 0)
                        .attr('y', 0)
                        .attr('width', 100)
                        .attr('height', 100);

    });

答案 1 :(得分:0)

我已将此添加到代码中,每1/2秒更改一次重力属性。我可以看到它鼓励一些运动 - 但它真的是由于调用force.start?

http://jsfiddle.net/LsMZp/7/

     var myVar=setInterval(function(){changeGravity()},500);

    function changeGravity()
    {
            var min = -100;
            var max = 1000;
            // and the formula is:
            var random = Math.floor(Math.random() * (max - min + 1)) + min;
                force.gravity = random;
                force.start();
    }