<!DOCTYPE html>
<meta charset="utf-8">
<!-- Load d3.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js"></script>
<!-- Create a div for SVG shapes -->
<div id="svg-container" style="width:1500px; height:800px;"></div>
<script>
var width = 1500;
var height = 800;
var svg = d3.select("#svg-container")
.append("svg")
.attr("xmlns", "http://www.w3.org/2000/svg")
.attr("xlink", "http://www.w3.org/1999/xlink")
.attr("viewBox", [0, 0, width, height])
.attr("width", width)
.attr("height", height)
.call(d3.zoom().on("zoom", function () {
svg.attr("transform", d3.zoomTransform(this))
}))
.append("g")
/*
....
*/
</script>
svg
.append("circle")
.attr("id", "shape_id")
.attr("cx", 100)
.attr("cy", 200)
.attr("r", 5)
.style("fill", "#68b2a1")
// встановити значення
.attr("from", 150)
.attr("to", "person")
// отримати значення (ідентифікація по "id")
var p = d3.select("#shape_id").attr("to");
// отримати значення (ітерація по всім доступним "circle")
d3.selectAll("circle")
.each(function(d) {
if ( d3.select(this).attr("from") === 150 ){
// ...
}
}
svg
.append("circle")
.attr("id", "shape_id")
.attr("cx", 100)
.attr("cy", 200)
.attr("r", 5)
// встановити клас
.classed("base-class circle-class", true)
// видалити клас
d3.select("#shape_id").classed("circle-class", false)
// видалити всі класи
d3.select("#shape_id").attr("class", null)
svg
.append("line")
.attr("x1", 0)
.attr("y1", 0)
.attr("x2", 100)
.attr("y2", 100)
.attr("stroke", "red")
.on("mouseover", function(){
d3.select(this).attr("stroke", "blue")
})
.on("mouseout", function(){nodeMouseOut()});
function nodeMouseOut(){
// ....
};
// простий текст
svg
.append("text")
.attr("x", 100)
.attr("y", 200)
.style("fill", "black")
.style("font-size", "20px")
.attr("text-anchor", "middle")
.text("TEXT");
// текст з посиланням
// в svg необхідний attr("xlink", "http://www.w3.org/1999/xlink")
svg
.append("text")
.attr("x", 100)
.attr("y", 200y)
.attr("text-anchor", "middle")
.classed('link-class', true)
.append("a")
.attr("href", "https://site.com")
.html("TEXT")
var bb = d3.select("#shape-id").node().getBBox()
console.log(bb, bb.x, bb.y, bb.width, bb.height)
var rg = svg.append("defs")
// gradient direction
.append("linearGradient")
.attr("id", "my_gradient")
.attr("x1", "0%").attr("y1", "0%")
.attr("x2", "100%").attr("y2", "0%");
// gradient color
rg.append("stop").attr("offset", "0%" ).attr("stop-color", "#5294e2").attr("stop-opacity", 1);
rg.append("stop").attr("offset", "20%" ).attr("stop-color", "#5294e2").attr("stop-opacity", 0.5);
rg.append("stop").attr("offset", "100%").attr("stop-color", "#5294e2").attr("stop-opacity", 0);
svg.append("rect")
.attr("x", 100)
.attr("y", 200)
.attr("width", 50)
.attr("height", 15)
.attr("fill", "url(my_gradient)");
// видалити всі об'єкти з svg
svg.selectAll("*").remove()
Examples:
Tutorials: