2016-11-14 4 views
0

Ich lerne gerade d3, aber ich kann nicht verstehen, warum andere Mikrolibraries in d3 nicht funktionieren, nachdem Sie d3 korrekt geladen haben. Zum Beispiel, wenn ich so etwas wied3 Mikrolithographie funktioniert nicht

var xScale = d3.scale.linear().domain([0, 20]).range([0, width]); 
var yScale = d3.scale.linear().domain([0, 20]).range([height, 0]); 

Meiner Browser-Konsole sagt Uncaught TypeError: Cannot read property 'linear' of undefined, während ich dies in vielen Beispielen verwendet sehen. In ähnlicher Weise so etwas wie

var xAxis = d3.svg.axis().scale(xScale).orient("bottom"); 
var yAxis = d3.svg.axis().scale(yScale).orient("left"); 

würde Fehler über svg erzeugen. Ich verstehe, dass ich einmal

<script src="d3-folder/d3.js"></script> 

alle anderen kleineren Bibliotheken sollte verfügbar sein. Warum ist es nicht so auf meinem System?

Antwort

1

Klingt wie ein Versionsproblem Ihrer eingeschlossenen d3-Datei. Verwenden Sie D3 V3.x oder V4.x?
In V3.x Sie linaer Skala verwenden, wie Sie auf dem Laufenden:

d3.scale.linear().domain([0, 20]).range([0, width]);. 

Aber in V4.x änderten sie den Namespace:

d3.scaleLinear().domain([0, 20]).range([0, width]); 

Achse sind auch in ihren verschiedenen Bereichen getrennt:

d3.axisTop - create a new top-oriented axis generator 
d3.axisRight - create a new right-oriented axis generator 
d3.axisBottom - create a new bottom-oriented axis generator 
d3.axisLeft - create a new left-oriented axis generator 

Hier können Sie die aktuelle API-Referenz für D3 V4.x finden: https://github.com/d3/d3/blob/master/API.md

+0

Vielen Dank. Ich benutze v4.x. Ja scaleLinear() funktioniert. Wie wäre es mit d3.svg und d3.axis? Irgendwelche Ideen? –

+0

Es sieht so aus als ob es zu viele veraltete Tuts gibt. Das scheint mein Verderben zu sein. –

Verwandte Themen