web-dev-qa-db-fra.com

d3.scale.linear () vs d3.scaleLinear ()

Salut, je regarde la documentation pour les échelles et elle affiche un format comme celui-ci var x = d3.scaleLinear([10,130]).range([0,960]) I j'ai l'impression que c'est étrange car la plupart des exemples que je vois en ligne utilisent quelque chose comme ceci:

var x = d3.scale.linear().domain([10,130]).range([0,960]) et ça marche.

Si j'utilise var x = d3.scaleLinear([10,130]).range([0,960]);, j'obtiens une erreur comme

TypeError: d3.scaleLinear n'est pas une fonction

Pourquoi pensez-vous qu'il existe un décalage entre les exemples de la documentation et ce que je vois dans les exemples en ligne? peut-être que je ne comprends pas comment lire la documentation.

EDIT: This est la documentation actuelle des balances.

29
jack blank

La documentation que vous regardez est pour un plugin pour D3 - son installation est décrite plus bas sur cette même page. Il fera éventuellement partie de la prochaine version majeure de D3.

7
Lars Kotthoff

Pour créer une échelle linéaire avec d3.js version 3, utilisez API d3.scale.linear()

et pour créer une échelle linéaire avec versions 4 et 5, utilisez API d3.scaleLinear()

Les références d'API pour la création d'une échelle linéaire pour les deux versions peuvent être trouvées ici:

v3.x scale.linear

v4.x scaleLinear

51
Hina Dawood

Ils font exactement la même chose, mais il suffit que le changement de code se produise de D3.js De version à version 4 ...

Donc, linéaire n'est plus la propriété de l'objet balance de d framework ...

à la place, cela fait partie de d3 avec la syntaxe camelCase ...

Donc d3.jsv utilise d3.scale.linear()

et pour créer une échelle linéaire avec v4 utilisez d3.scaleLinear() à la place ...

version 3:

d3.scale.linear ()

Construit une nouvelle échelle linéaire avec le domaine par défaut [0,1] et la plage par défaut [0,1]. Ainsi, l’échelle linéaire par défaut est équivalente à la fonction d’identité pour les nombres; par exemple, linear (0.5) renvoie 0.5.

version 4:

d3.scaleLinear ()

Construit une nouvelle échelle continue avec le domaine d'unité [0, 1], la plage d'unité [0, 1], l'interpolateur par défaut et le blocage bloqués. Les échelles linéaires sont un bon choix par défaut pour les données quantitatives continues car elles préservent les différences proportionnelles. Chaque valeur de plage y peut être exprimée en fonction de la valeur de domaine x: y = mx + b.

5
Alireza

Comme spécifié par Hina, d3.scale.linear () est utilisé sur D3 3.0 et d3 4.0 a adopté la convention d'espace de noms plat. Voici un extrait du résumé du journal des modifications d3

Si vous ne vous souciez pas de la modularité, vous pouvez principalement ignorer cette modification et continuer à utiliser le groupe par défaut. Cependant, l’adoption de modules ES6 a une conséquence inévitable: chaque symbole de D3 4.0 partage maintenant un espace de noms plat plutôt que celui imbriqué de D3 3.x. Par exemple, d3.scale.linear est maintenant d3.scaleLinear, ...

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

EDIT: oublié de mentionner - pour corriger votre erreur, vous devrez peut-être mettre à jour le lien ou le fichier vers d3 que vous avez dans votre programme. Je l'appelle directement depuis le site avec:

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