可视化工具--D3--案例分析--Reingold Tilford Tree

可视化工具–D3–案例分析

Reingold Tilford Tree

Reingold Tilford树是由Edward Reingold和John Tilford一起提出并发表的一种大型树拓扑结构,用来紧凑分层的展示数据结构。

实例链接 http://bl.ocks.org/mbostock/4063550

部分接口:
separation:设置相隔结点之间的间隔计算函数
diagonal.radial:创建一个新的斜线生成器
projection:设置一个可选的点变换器
tree.nodes:计算并返回指定结点的子结点信息
tree.links:计算一个子结点数组与父结点的连接信息

创建树布局并定义布局信息:

var tree = d3.layout.tree()
            .size([360, diameter / 2 - 120])
            .separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });

定义线与点:

var diagonal = d3.svg.diagonal.radial()
            .projection(function(d) { return [d.y, d.x / 180 * Math.PI]; });

读取数据后计算节点层次信息:

var nodes = tree.nodes(root),
                links = tree.links(nodes);

添加节点:

var node = svg.selectAll(".node")
                .data(nodes)
                .enter().append("g")
                .attr("class", "node")
                .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; });
node.append("circle")
                .attr("r", 4.5);

加树中节点间连线:

var link = svg.selectAll(".link")
                .data(links)
                .enter().append("path")
                .attr("class", "link")
                .attr("d", diagonal);

添加文本信息:

node.append("text")
                .attr("dy", ".31em")
                .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
                .attr("transform", function(d) { return d.x < 180 ? "translate(8)" : "rotate(180)translate(-8)"; })
                .text(function(d) { return d.name; });
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值