<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>树形图(集群图)</title>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<style>
svg{
display: block;
width: 1000px;
height: 800px;
margin: 100px auto;
}
path.link{
stroke: #333;
stroke-width: 1.5px;
fill:transparent;
}
.node circle{
fill:#fff;
stroke:steelblue;
stroke-width: 1.5px;
}
</style>
</head>
<body>
<!--数据一共3级-->
<svg></svg>
</body>
</html>
<script> var tree = d3.layout.tree()
.size([600, 400])//设定尺寸,即转换后的各个节点的坐标在哪一个范围内;
.separation(function (a, b) {//设置节点之间的间隔;
return (a.parent == b.parent ? 1 : 2)
});
// 转换数据
d3.json('tree.json',function (error,root) {//root是读入的数据;
var nodes = tree.nodes(root);
var links = tree.links(nodes);
console.log(nodes)//nodes中有各个节点的子节点(children),深度(depth),名称(name).位置(x,y)信息;其中name是json文件中的属性
console.log(links)//links中有连线两端(source,target)的节点信息;
// 绘制
// d3.svg.diagonal()是一个对角线生成器,只要输入两个顶点坐标,即可生成一条贝塞尔曲线
// 创建一个对角线生成器
var diagonal = d3.svg.diagonal()
.projection(function(d){return [d.y,d.x]})//projection()是一个点变换器,默认是【d.x,d.y】,即保持原坐标不变,如果写成 [ d.y , d.x ] ,即是说对任意输入的顶点,都交换 x 和 y 坐标。
var svg = d3.select('svg')
.append('g')//不加这个g的时候,中国两个字出不来;
.attr("transform", "translate(140,0)");
// 绘制连线方法
var link = svg.selectAll('.link')
.data(links)
.enter()
.append('path')
.attr('class','link')
.attr('d',diagonal)
var node = svg.selectAll('.node')
.data(nodes)
.enter()
.append('g')
.attr('class','node')
.attr('transform',function (d) {
return "translate(" + d.y + "," + d.x + ")";
})
node.append('circle')
.attr('r',4.5)
node.append('text')
.attr("dx", function(d) { return d.children ? -8 : 8; })
.attr("dy", 3)
.style("text-anchor", function(d) { return d.children ? "end" : "start"; })
.text(function(d) { return d.name; });
}) </script>

最新文章

  1. [LeetCode] Two Sum II - Input array is sorted 两数之和之二 - 输入数组有序
  2. Linux下长时间ping网络加时间戳并记录到文本
  3. Hibernate学习笔记(二)
  4. js- this
  5. SQLServer多表连接查询
  6. javascript 去掉空格之后的字符 正则表达式
  7. 转:C# 使用NLog记录日志
  8. C#的winform拼数字游戏
  9. How to easily create popup menu for DevExpress treelist z
  10. Headfirst设计模式的C++实现——抽象工厂(Abstract Factory)
  11. android的Log日志打印管理工具类(一)
  12. Shortest path of the king
  13. 通过 UI 管理 docker
  14. Android运行时权限
  15. 解释下面URL
  16. 关闭VS2015的WPF UI调试工具
  17. 深入浅出的webpack构建工具---AutoDllPlugin插件(八)
  18. redis哨兵模式,数据尽量少的丢失
  19. Python 生成器的使用(yield)
  20. tomcat-在eclispe中配置远程调试

热门文章

  1. 使用SpringSecurity
  2. SQL 自定义存储过程报错
  3. DRF的视图
  4. 块级元素或者行内元素在设置float属性之后是否改变元素的性质?
  5. Java并发编程(五)-- Java内存模型补充
  6. 潭州课堂25班:Ph201805201 django 项目 第二十二课 文章主页 新闻列表页面滚动加载,轮播图后台实现 (课堂笔记)
  7. (转)JavaWeb学习之Servlet(一)----MyEclipse及Tomcat的配置
  8. 安装vmware 已经配置Centos7
  9. 使用8.0版本jdbc驱动连接数据库操作
  10. ggplot2 作图