D3 pomeni Data-Driven Documents. D3.js je JavaScript knjižnica, ki omogoča manipulacijo dokumentov na podlagi podatkov, povezanih z njimi.
Uporabljamo jo predvsem za dinamične in interaktivne vizualizacije podatkov na spletu.
D3 knjižnico vključimo z ukazom:
<script src="d3js/d3.min.js"></script>
To pomeni, da je datoteka d3.min.js shranjena lokalno v mapi
d3js.
Knjižnico lahko naložimo tudi neposredno s speta:
<script src="https://d3js.org/d3.v4.min.js"></script>
D3 uporablja standardne spletne tehnologije:
Glavne stvari, ki jih omogoča:
Ključna ideja: podatki → vplivajo na izgled in strukturo strani
Preden začnemo z D3, poglejmo še navaden SVG. SVG je vektorski zapis, s katerim lahko v HTML rišemo oblike.
<svg width="100" height="100">
<rect x="0" y="0" width="50" height="100"></rect>
</svg>
Tukaj smo narisali pravokotnik. Kasneje bomo podobne elemente ustvarjali dinamično z D3.
D3 omogoča izbiro elementov v HTML dokumentu podobno kot CSS.
Z ukazom d3.select() izberemo prvi element, ki ustreza izbirniku.
Z ukazom d3.selectAll() pa izberemo vse ustrezne elemente.
d3.select("p") izbere prvi odstavek.d3.select("#p2") izbere element z ID-jem p2.d3.selectAll("p") izbere vse odstavke.<p id="p1">Prvi odstavek</p>
<p id="p2">Drugi odstavek</p>
<script>
d3.select("p").style("color", "green");
d3.select("#p2").style("color", "blue");
d3.selectAll("p").style("font-size", "50%");
</script>
Prvi odstavek
Drugi odstavek
V tem primeru najprej prvi odstavek pobarvamo zeleno, nato drugi odstavek modro, na koncu pa vsem odstavkom spremenimo velikost pisave.
D3 omogoča tudi izbiro elementov znotraj drugih elementov. To naredimo z veriženjem ukazov:
select() – izbere en elementselectAll() – izbere več elementovPomembno: izbira poteka korak za korakom (od starša do otrok).
<table id="t1">
<tr>
<td>ena</td>
<td>dva</td>
</tr>
<tr>
<td>tri</td>
<td>štiri</td>
</tr>
</table>
<script>
d3.select("#t1")
.select("tr")
.selectAll("td")
.style("background-color", "lightblue");
</script>
| ena | dva |
| tri | štiri |
Koraki:
#t1trtdNaloga:
Z D3 lahko spreminjamo:
.text()).attr()).property()).append()).remove())
<p id="p3">Tretji odstavek</p>
<script>
d3.select("#p3").text("Tudi to je odstavek.");
</script>
Tretji odstavek
Z .text() prepišemo vsebino elementa.
<p id="p4">Četrti odstavek</p>
<script>
d3.select("body")
.append("p")
.attr("id","p5")
.text("Peti odstavek");
d3.select("body")
.insert("p")
.attr("id","p6")
.text("Šesti odstavek");
d3.select("#p6").remove();
</script>
Četrti odstavek
append() doda element na konecinsert() vstavi elementremove() izbriše element
<input id="i1" type="checkbox">
<script>
d3.select("#i1").property("checked", true);
</script>
Z .property() nastavljamo lastnosti elementov (npr. checkbox).
To ni isto kot attr().