<html>
<head>
<script src="https://d3js.org/d3.v5.js"></script>
</head>
<body>
<svg>
</svg>
<script>
var data = [100, 200, 300, 400, 500, 600];
var scale = 10;
var svg = d3.select('svg').attr("width", "750px").attr("height", "750px");
// 다음처럼 요소의 특성을 변환시킬 수 있습니다.
d3.select("body").transition().style("background-color", "red");
// transition을 사용해서 변형할 요소를 문서 내에 추가해줍니다.
svg.selectAll("circle").data(data)
.enter().append('circle')
.attr("cx", function (d) { return d; })
.attr("cy", function (d) { return 20; })
.attr("r", function (d) { return 10; });
svg.selectAll("circle")
// transition
// duration: 해당 transition이 어느 정도의 시간동안 진행되는지
// delay: 선택한 요소가 n개 일때, 이를 i로 iterable하게 따라가면서, 언제 transition이 시작되는지 포인트를 잡음.
.transition().duration(500).delay(function(d, i) { return i * 1000})
.attr("fill", function (d) { return "hsl(" + Math.random() * 360 + ", 100%, 50%" })
.attr("r", function (d) { return Math.sqrt(d * scale); })
.attr("cy", function (d) { return d; })
.attr("stroke", function (d) { return 'black'; })
.attr("stroke-width", function (d) { return 10; })
.on('mouseenter', function () {
d3.select(this)
.transition()
.attr('r', 10);
})
.on('mouseleave', function () {
d3.select(this)
.transition()
.attr('r', 6);
})
</script>
</body>
</html>
댓글남기기