Etiquetado de gráficos de líneas animados con D3
Frecuentes
Visto 365 veces
1
Soy nuevo en D3 y me encontré con un problema que parece que no puedo resolver.
He construido un gráfico de líneas animadas usando este tutorial, y ahora estoy tratando de agregarle. Lo que pensé que sería una buena idea sería etiquetar cada línea en el gráfico lineal, pero etiquetarla al final de la línea.
Esto es lo que he encontrado hasta ahora:
Como puede ver, es subóptimo en el mejor de los casos. Estoy colocando el texto incorrectamente, pero lo que no es obvio es cómo colocarlo de la manera correcta. Aquí está el código en cuestión.
name.transition()
.duration(duration)
.ease("linear")
.attr("transform", function(d) {
return "translate(" + (width - margin.left - margin.right) +", " + y(d[n-2]) + ")";
});
Parece que la aceleración "lineal" está desactivada, y también parece estar usando una escala diferente a veces.
¿Hay algún experto en D3 (o novato) dispuesto a enseñarme la forma correcta de hacerlo?
1 Respuestas
1
Parece haber dos problemas aquí:
.interpolate("basis")
- está utilizando una interpolación lineal para el título, pero una interpolación B-spline para la ruta. Comentar esta línea mantiene el título bastante ajustado con su línea de datos (aunque también suaviza la línea, probablemente sea algo bueno para la mayoría de los gráficos de datos)."Salta" cuando cambia la escala del eje. Esto se debe a que el título está en transición a la nueva posición en la nueva escala, pero su posición de inicio todavía está establecida en relación con la escala anterior, por lo que puede comenzar por encima o por debajo de la línea que está rastreando. Creo que puedes arreglar esto agregando un directo
.attr
configuración antes de comenzar la transición, para fijar la posición inicial del título:name .attr("transform", function(d) { return "translate(" + (width - margin.left - margin.right) +", " + y(d[n-2]) + ")" }) .transition() // etc
respondido 08 mar '13, 00:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript animation d3.js label linechart or haz tu propia pregunta.
Esto es realmente genial. Es una lástima que se deshaga del B-Spline. ¿Crees que hay alguna forma de mantener eso y luego usar un tipo diferente de interpolación para el título? - eric koslow
No estoy seguro, pero creo que esto sería difícil. Las opciones de aceleración se muestran aquí: Easings.net - es posible que lo haga mejor con el valor cúbico predeterminado de entrada y salida, pero dudo que siga la línea exactamente. - rabinowitz