yscale schemecategory10 javascript d3.js svg

javascript - schemecategory10 - d3.scale is undefined



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

Hola, estoy viendo la documentation para escalas y muestra un formato como este var x = d3.scaleLinear([10,130]).range([0,960]) Siento que esto es extraño porque la mayoría de los examples que veo en línea usan algo. Me gusta esto:

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

Si uso var x = d3.scaleLinear([10,130]).range([0,960]); Me sale un error como

TypeError: d3.scaleLinear no es una función

¿Por qué crees que hay una discrepancia entre los ejemplos en la documentación y lo que veo en los ejemplos en línea? tal vez no entiendo cómo leer la documentación.

EDITAR: This es la documentación actual para escalas.


Como lo especifica Hina, d3.scale.linear () se usa en D3 3.0, y d3 4.0 adoptó la convención de espacio de nombres plano. Aquí hay un fragmento del resumen d3 changelog

Si no le importa la modularidad, puede ignorar este cambio y seguir usando el paquete predeterminado. Sin embargo, hay una consecuencia inevitable de la adopción de módulos ES6: cada símbolo en D3 4.0 ahora comparte un espacio de nombres plano en lugar del anidado de D3 3.x. Por ejemplo, d3.scale.linear ahora es d3.scaleLinear, ...

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

EDITAR: Olvidó mencionar: para corregir su error, es posible que deba actualizar el enlace o archivo a d3 que tiene en su programa. Lo llamo directamente desde el sitio web con:

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


Están haciendo exactamente lo mismo, pero es solo que el cambio de código sucedió en D3.js de la versión 3 a la versión 4 ...

Así que lineal ya no es propiedad del objeto escala del framework d3 ...

en cambio, es parte de d3 con la sintaxis de camelCase ...

Entonces d3.js v3 usa d3.scale.linear()

y para crear una escala lineal con v4 use d3.scaleLinear() lugar ...

versión 3:

d3.scale.linear ()

Construye una nueva escala lineal con el dominio predeterminado [0,1] y el rango predeterminado [0,1]. Por lo tanto, la escala lineal predeterminada es equivalente a la función de identidad para los números; por ejemplo lineal (0.5) devuelve 0.5.

versión 4:

d3.scaleLinear ()

Construye una nueva escala continua con el dominio de la unidad [0, 1], el rango de la unidad [0, 1], el interpolador y la sujeción predeterminados deshabilitados. Las escalas lineales son una buena opción predeterminada para los datos cuantitativos continuos porque preservan las diferencias proporcionales. Cada valor de rango y puede expresarse como una función del valor de dominio x: y = mx + b.


La documentación que está mirando es para un complemento para D3: cómo instalarlo se describe más adelante en esa misma página. Eventualmente formará parte del próximo lanzamiento importante de D3.


Para crear una escala lineal con d3.js versión 3 use API d3.scale.linear()

y para crear una escala lineal con la versión 4 y 5 use API d3.scaleLinear()

Las referencias de API para crear una escala lineal para ambas versiones se pueden encontrar aquí:

v3.x scale.linear

v4.x scaleLinear