2016-03-12 21 views
13

Ciao sto guardando il documentation per le bilance e mostra un formato come questo var x = d3.scaleLinear([10,130]).range([0,960]) Mi sembra strano perché la maggior parte di examples che vedo online usa qualcosa come this:d3.scale.linear() vs d3.scaleLinear()

var x = d3.scale.linear().domain([10,130]).range([0,960]) e funziona.

Se uso var x = d3.scaleLinear([10,130]).range([0,960]); ottengo un errore come

TypeError: d3.scaleLinear is not a function

Perché pensi che ci sia una discrepanza tra gli esempi nella documentazione e quello che vedo negli esempi on-line? forse non capisco come leggere la documentazione.

MODIFICA: This è la documentazione corrente per le bilance.

risposta

5

La documentazione che si sta cercando è per un plug-in per D3 - come installarlo è descritto più in basso nella stessa pagina. Alla fine farà parte della prossima major release di D3.

+1

Sì, questo è il collegamento per la documentazione per la versione corrente. –

22

Per creare una scala lineare con d3.js versione 3 uso API d3.scale.linear()

e creare una scala lineare con versione 4 uso API d3.scaleLinear()

riferimenti API per la creazione una scala lineare per entrambe le versioni può essere trovata qui:

v3.x scale.linear

v4.x scaleLinear

+0

Ho avuto lo stesso problema con CodePen, dove stavo guardando un video più vecchio che utilizzava la versione 3, ma CodePen utilizza 4+. Per trovare la versione che stai usando, digita semplicemente 'd3 -v' nella directory del progetto. –

1

Come specificato da Hina, d3.scale.linear() viene utilizzato su D3 3.0 e d3 4,0 ha adottato la Convenzione namespace piatta. Ecco un frammento dalla sintesi d3 changelog

If you don’t care about modularity, you can mostly ignore this change and keep using the default bundle. However, there is one unavoidable consequence of adopting ES6 modules: every symbol in D3 4.0 now shares a flat namespace rather than the nested one of D3 3.x. For example, d3.scale.linear is now d3.scaleLinear,...

Fonte: https://github.com/d3/d3/blob/master/CHANGES.md

EDIT: dimenticato di dire - per correggere il vostro errore, potrebbe essere necessario aggiornare il link o un file a D3 che avete nella vostra programma. Io lo chiamo direttamente dal sito con:

<script src="https://d3js.org/d3.v4.min.js"></script> 
2

Stanno facendo esattamente la stessa cosa, ma è solo il cambiamento del codice capita di D3.js da versione 3 a versione 4 ...

Così lineare non è una proprietà dell'oggetto scala d3 quadro più ...

invece è parte della D3 con camelCase sintassi ...

Così d3.jsv3 uso d3.scale.linear()

e per creare una scala lineare con v4 uso d3.scaleLinear() invece ...

versione 3:

d3.scale.linear()

Constructs a new linear scale with the default domain [0,1] and the default range [0,1]. Thus, the default linear scale is equivalent to the identity function for numbers; for example linear(0.5) returns 0.5.

versione 4 :

d3.scaleLinear()

Constructs a new continuous scale with the unit domain [0, 1], the unit range [0, 1], the default interpolator and clamping disabled. Linear scales are a good default choice for continuous quantitative data because they preserve proportional differences. Each range value y can be expressed as a function of the domain value x: y = mx + b.