November 2017
Studiengang Medieninformatik an der TH Köln
Campus Gummersbach
Jessica Herrmann, Tim Missal
SVG ist ein Standard des W3C und basiert auf XML. Wie auch HTML handelt es sich bei SVG um eine Auszeichnungssprache. Die Sprache wird zur Beschreibung von zweidimensionalen Vektorgrafiken genutzt.
D3 (or D3.js) is a JavaScript library for visualizing data using web standards. D3 helps you bring data to life using SVG, Canvas and HTML. D3 combines powerful visualization and interaction techniques with a data-driven approach to DOM manipulation, giving you the full capabilities of modern browsers and the freedom to design the right visual interface for your data.Quelle: https://d3js.org/
// pures JavaScript, die Schriftfarbe aller p-Tags wird auf weiß gesetzt
var paragraphs = document.getElementsByTagName("p");
for (var i = 0; i < paragraphs.length; i++) {
var paragraph = paragraphs.item(i);
paragraph.style.color = 'white';
}
// D3.js wird genutzt um alle p-Tags auszuwählen und ihre Schriftfarbe
// auf weiß zu setzten
d3.selectAll("p").style("color", "white");
// auswahl eines einzelnen Elements mit mit D3.js
d3.select("body").style("background-color", "black");
Umwandlung der abstrakten Daten für die visuelle Darstellung.
Die Bibliothek bietet Funktionen um das Interval der Daten die visualisiert werden sollen in ein neues Interval für die Ausgabe umzuwandeln. Das Interval der Daten wird als „domain“ bezeichnet und das neue Interval als „range“.
var scaleDefault = d3.scaleLinear();
console.log(scaleDefault(50));
//Ausgabe: 50
console.log(scaleDefault(100));
//Ausgabe: 100
var scale = d3.scaleLinear().domain([0,10000]).range([0,100]);
console.log(scale(50));
//Ausgabe: 0.5
console.log(scale(100));
//Ausgabe: 1
var data = [10, 2, 5, 12, 9];
console.log(d3.max(data));
//Ausgabe: 12
console.log(d3.min(data));
//Ausgabe: 2
console.log(d3.extent(data));
//Ausgabe: [2, 12]
var timeParse = d3.timeParse('%d.%m.%Y');
var time = timeParse('10.10.2017');
console.log(time);
//Ausgabe: Tue Oct 10 2017 00:00:00 GMT+0200 (Instanz des Objekts Date)
console.log(time instanceof Date);
//Ausgabe: true
var formatTime = d3.timeFormat('%d.%m.%y');
console.log(formatTime(time));
//Ausgabe: 10.10.17
// Auswahl eines Elements und einfügen eines SVG Elements als Kindelement
var canvas = d3.select('body').append('svg').attr('width', 500).attr('height', 100);
canvas.style('border', '1px solid black');
var x = d3.scaleLinear().domain([0,1000]).range([0,500]);
// erstellen der Achse, einziger notwendiger Parameter ist die Skalierung
var xAxis = d3.axisBottom(scale);
// aufrufen der Funktion welche die Achse erstellt
var xAxisGroup = canvas.append('g').call(xAxis);
D3.js bietet mehrere Methoden für das erstellen einer Achse, diese unterscheiden sich in der Orientierung welche die Position der Beschriftung festlegt.
var xAxisGroup = canvas.append("g").attr("transform", "translate(0,70)").call(Axis);
Transform ist eine CSS Eigenschaft die auch bei Animationen verwendet wird. Diese ermöglicht es ein Element zu verschieben. Der erste übergebene Wert verschiebt das Element auf der x-Achse und der zweite auf der y-Achse.
var xAxisGroup = canvas.append("g").call(newAxis).append("text")
.attr("transform", „rotate(-90)");
Vorallem für die y-Achse ist es auch wichtig drehen zu können, das geht ebenfalls mit dem Attribut transform. Als Wert wird rotate(Grad) übergeben. Eine positive Zahl bewirkt dabei eine Drehung mit dem Uhrzeiger und ein negativer Wert gegen den Uhrzeiger.
d3.json('example.json', function(error, data) {
if (error) throw error;
...
});