(Data-Driven-Documents)
<html>
<body>
<svg width="100%" height="100%">
<circle
cx="200"
cy="200"
r="100"
fill="red"/>
</svg>
</body>
</html>
我們來畫個圓
<circle /> cx, cy, r
<rect /> x y width height
<line /> x1 y1 x2 y2
<path> d
<text></text>
viewpoint
viewbox
viewbox
d3.select("rect").datum(data);
rect
Data
for(var i = 1; i <= 10; i++) {
d3.select("svg")
.append("rect")
.select("rect")
.styles({
width: data[i] + "px"
});
}
d3.select("rect:nth-of-type(5)");
d3.select("rect")
.datum(資料你好)
.attrs({
"width": function(d, i) {
return this;
}
})
for(var i = 1; i <= 10; i++ {
d3.select("svg")
.append("rect")
.datum(data[i])
.attrs({
width: function (d, i) {
return d * 10;
}
});
}
問題: 到底要多少個? 多出來的該怎辦?
(...).data(data).enter().append("svg")
(...).exit().remove()
d3.selectAll("rect")
.attrs({width: 0})
.transition()
.duration(1000)
.delay(1000)
.attrs({width: 100})
d3.nest()
.key()
.entries()
var data = [
{value: 1, cat: 'A' },
{value: 2, cat: 'B' },
{value: 3, cat: 'B' },
{value: 4, cat: 'C' },
{value: 5, cat: 'C' },
]
1. 準備資料
2. 建立 Hierarchy 物件
3. 建立 Pack Layout 物件
4. 利用 Pack Layout 更新Hierarchy 物件
5. 利用 Data Binding 建立元素並繪製物件