
~~~
<!DOCTYPE html>
<html>
<head>
<script src="js/d3.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8"></script>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.node{
fill:white; /*白色填充*/
stroke:red; /*紅色邊界*/
stroke-width: 1px;
}
text{
font-size: 10px;
word-spacing: 0px;
letter-spacing: 0px;
}
.link{
fill:none; /*這句很關鍵,要不曲線會很丑*/
}
</style>
</head>
<body>
<svg></svg>
<script type="text/javascript">
var width=200;
var height =200;
var svg = d3.select("svg");
svg.attr("width",1000)
.attr("height",1000)
.attr("x",100)
.attr("y",100);
var cluster = d3.layout.cluster() //默認生成的樹形結構是豎直方向
.size([width,height]); //這里要設置合理,控制展現區域的寬高
var diagonal = d3.svg.diagonal() //對角線生成器 將線條進行處理 需要和path綁定
.projection(function(d) { return [d.y+100, d.x]; });
d3.json("json/jiqun.json",function(error,root){
var nodes = cluster.nodes(root); //生成節點
var links = cluster.links(nodes); //生成連線
console.log(links);
/*畫線線*/
var link = svg.selectAll(".link")
.data(links)
.enter()
.append("path")
.attr("class","link")
.style("stroke","#ccc")
.style("stroke-width",1)
.attr("d",diagonal); //對數據源進行處理 并畫出來
/*畫圈圈詛咒你*/
var circles = svg.selectAll(".node")
.data(nodes)
.enter()
.append("g") //要給加class 需要用g
.append("circle") //給每個g添加circle
.attr("r",4)
.attr("class","node")
.attr("transform",function(d,i){
return "translate("+(d.y+100)+","+d.x+")"; //將坐標移動到指定的點并且x,y對調
});
/*寫文字*/
var texts = svg.selectAll("text")
.data(nodes)
.enter()
.append("text")
.style("fill","black")
.attr("transform",function(d,i){
var temp = d.children?-12:12;//注意這里根據他有沒有孩子節點來設置它的方位
var y = d.y+temp;
return "translate("+(y+100)+","+d.x+")";
})
.text(function(d,i){
return d.name;
});
});
</script>
</body>
</html>
~~~
- 前言
- 【d3.js教程01】d3入門
- 【d3.js教程02】d3入門
- 【d3.js教程03】動態初探索
- 【d3.js教程04】互動第一步
- 【d3.js教程05】簡單的圖標之弧形
- 【d3.js教程06】force 力導向圖
- 【d3.js教程07】弦圖
- 【d3.js教程08】集群圖cluster
- 【d3.js教程09】包圖pack
- 【d3.js教程10】氣泡圖bubble chart
- 【d3.js教程11】氣泡圖指定顏色
- 【d3.js教程12】地圖
- 【d3.js教程13】氣泡圖一維與多維展示以及數據處理
- 【d3.js教程14】可拖動的地圖詳解
- 【d3.js教程15】如何從excel等表格生成csv數據