Podcast
Questions and Answers
¿Cuánto tardará la transición en este código?
svg.selectAll("text") .data(dataset) .text(function(d) { return d; }) .attr("x", function(d, i) { return xScale(i) + xScale.rangeBand() / 2; }) .attr("y", function(d) { return h - yScale(d) + 14; });
¿Cuánto tardará la transición en este código?
svg.selectAll("text") .data(dataset) .text(function(d) { return d; }) .attr("x", function(d, i) { return xScale(i) + xScale.rangeBand() / 2; }) .attr("y", function(d) { return h - yScale(d) + 14; });
- 1 seg.
- 2 seg.
- No hay transición. (correct)
- Depende del número de barras del gráfico.
¿Cuánto tardará la transición en este código?
svg.selectAll("text") .data(dataset) .text(function(d) { return d; }) .transition() .delay(1000) .attr("x", function(d, i) { return xScale(i) + xScale.rangeBand() / 2; }) .attr("y", function(d) { return h - yScale(d) + 14; });
¿Cuánto tardará la transición en este código?
svg.selectAll("text") .data(dataset) .text(function(d) { return d; }) .transition() .delay(1000) .attr("x", function(d, i) { return xScale(i) + xScale.rangeBand() / 2; }) .attr("y", function(d) { return h - yScale(d) + 14; });
- Depende del número de barras del gráfico.
- El tiempo por defecto transición. (correct)
- 2 seg.
- 1 seg.
¿Es la sintaxis correcta?
on("mouseover", function(d) { d3.select(this) .style("fill", "red"); })
¿Es la sintaxis correcta?
on("mouseover", function(d) { d3.select(this) .style("fill", "red"); })
- No, porque la llamada a la función es incorrecta.
- No, porque falta la selección del objeto.
- Sí. (correct)
- No, porque el evento mouseover no existe.
¿Es la sintaxis correcta?
on("outmouse", function(d) { d3.seleccionar(this) .style("rellenar", "rojo"); })
¿Es la sintaxis correcta?
on("outmouse", function(d) { d3.seleccionar(this) .style("rellenar", "rojo"); })
¿Podemos escuchar eventos en los elementos p
de D3?
¿Podemos escuchar eventos en los elementos p
de D3?
¿Podemos escuchar/generar eventos en los elementos rect
de D3?
¿Podemos escuchar/generar eventos en los elementos rect
de D3?
¿Qué conseguimos cuando utilizamos en la transición la función ease("linear")
?
¿Qué conseguimos cuando utilizamos en la transición la función ease("linear")
?
Si queremos exportar nuestra visualización a un archivo svg
, tenemos que:
Si queremos exportar nuestra visualización a un archivo svg
, tenemos que:
Utilizando captura de pantalla para exportar nuestra visualización a otro formato:
Utilizando captura de pantalla para exportar nuestra visualización a otro formato:
¿Cuál es el comportamiento al aplicar la función node.call(force.drag)
?
¿Cuál es el comportamiento al aplicar la función node.call(force.drag)
?
Flashcards
¿Qué es Force Layout?
¿Qué es Force Layout?
Un tipo de visualización que representa relaciones entre entidades mediante un grafo.
¿Qué archivo se usa para Force Layout?
¿Qué archivo se usa para Force Layout?
Carga un archivo .json que contiene nodos y conexiones para generar el gráfico Force Layout.
¿Qué hace svg.selectAll("circle.node")
?
¿Qué hace svg.selectAll("circle.node")
?
Define los círculos que representan los nodos en el gráfico Force Layout.
¿Qué hace svg.selectAll("line.link")
?
¿Qué hace svg.selectAll("line.link")
?
Signup and view all the flashcards
¿Qué hace d3.layout.force()
?
¿Qué hace d3.layout.force()
?
Signup and view all the flashcards
¿Qué hace force.on("tick", ...)
?
¿Qué hace force.on("tick", ...)
?
Signup and view all the flashcards
¿Qué hace node.call(force.drag)
?
¿Qué hace node.call(force.drag)
?
Signup and view all the flashcards
¿Qué elementos generan eventos?
¿Qué elementos generan eventos?
Signup and view all the flashcards
¿Qué hace .on("click", function() { ... })
?
¿Qué hace .on("click", function() { ... })
?
Signup and view all the flashcards
¿Qué hace svg.selectAll("rect").data(dataset).attr(...)
?
¿Qué hace svg.selectAll("rect").data(dataset).attr(...)
?
Signup and view all the flashcards
¿Qué hace d3.select(this).remove()
?
¿Qué hace d3.select(this).remove()
?
Signup and view all the flashcards
¿Qué hace .transition()
?
¿Qué hace .transition()
?
Signup and view all the flashcards
¿Qué hace .duration(3000)
?
¿Qué hace .duration(3000)
?
Signup and view all the flashcards
¿Qué hace .ease("linear")
?
¿Qué hace .ease("linear")
?
Signup and view all the flashcards
¿Qué hace .delay(3000)
?
¿Qué hace .delay(3000)
?
Signup and view all the flashcards
¿Qué es mouseover
?
¿Qué es mouseover
?
Signup and view all the flashcards
¿Qué es mouseout
?
¿Qué es mouseout
?
Signup and view all the flashcards
¿Qué hace d3.select(this).style("fill", "red")
?
¿Qué hace d3.select(this).style("fill", "red")
?
Signup and view all the flashcards
¿Cómo exportar un gráfico D3.js?
¿Cómo exportar un gráfico D3.js?
Signup and view all the flashcards
¿Qué tipo de archivo genera la captura de pantalla?
¿Qué tipo de archivo genera la captura de pantalla?
Signup and view all the flashcards
¿Por qué es útil exportar a SVG?
¿Por qué es útil exportar a SVG?
Signup and view all the flashcards
¿Cuál es el comportamiento predeterminado de force.drag
?
¿Cuál es el comportamiento predeterminado de force.drag
?
Signup and view all the flashcards
¿Que valor controla la duración de una transición?
¿Que valor controla la duración de una transición?
Signup and view all the flashcards
¿Que permite el evento mouseover?
¿Que permite el evento mouseover?
Signup and view all the flashcards
¿Que regula la función ease?
¿Que regula la función ease?
Signup and view all the flashcards
¿Que hace la función delay?
¿Que hace la función delay?
Signup and view all the flashcards
¿Que es el DOM?
¿Que es el DOM?
Signup and view all the flashcards
¿Que tipo de archivo generamos cuando utilizamos captura de pantalla para exportar nuestra visualización?
¿Que tipo de archivo generamos cuando utilizamos captura de pantalla para exportar nuestra visualización?
Signup and view all the flashcards
¿Podemos escuchar eventos en los elementos p de D3?
¿Podemos escuchar eventos en los elementos p de D3?
Signup and view all the flashcards
¿Qué permite la transicion en D3?
¿Qué permite la transicion en D3?
Signup and view all the flashcards
Study Notes
Herramientas de Visualización: D3.js, Force Layout, Transiciones, Movimiento e Interacción
- D3 incorpora multitud de gráficas diferentes, y cada una necesita parámetros específicos adaptados a sus particularidades.
- Es importante dominar los principios básicos de D3 que son comunes a todas las gráficas.
- Se abordará la visualización Force-Directed Graph o Force Layout, para representar relaciones entre entidades mediante un grafo.
- Los gráficos Force Layout son utilizados en redes sociales para reflejar relaciones entre usuarios.
- Se empezará a dar movimiento a los gráficos, ya que D3 es una de las librerías de visualización más potentes.
- Se cubrirá la actualización de datos reaccionando a eventos y el uso de transiciones y movimiento para dinamizar las visualizaciones.
- También se explorará la exportación de visualizaciones.
Force Layout
- Se utilizará uno de los datasets del libro "Getting started with D3" de M. Dewar (2012), disponible en Github.
- Para generar el gráfico, se partirá de un archivo .json que puede ser cargado en Brackets.
- El archivo .json contiene los nodos (paradas de metro) y las conexiones entre paradas.
- Se definen los círculos o puntos del gráfico, identificando los círculos de forma similar a cuando se dibuja un histograma.
- Se definen las líneas entre los puntos.
- Se define el algoritmo a utilizar, en este caso layout.force, que utiliza los atributos nodes y links.
- Se adaptan los valores del dataset a los requerimientos del algoritmo con la función force.on.
- Se proporciona la habilidad de arrastrar los nodos por la pantalla con la línea de código
node.call(force.drag)
.
Actualización de Gráficos con Base en Eventos
- Todas las visualizaciones tienen sus eventos.
- Con D3 es fácil generar interacción en las visualizaciones.
- El movimiento es importante en las visualizaciones, transmitiendo mensajes e ideas.
- Se utilizará como base el código de la gráfica bar chart con escala ordinal del tema anterior.
- Los pasos a seguir son:
- Crear un botón que genere un evento para actualizar la gráfica.
- Crear un nuevo dataset y actualizar la gráfica con él.
- Actualizar las dimensiones del gráfico.
- Hacer efectiva las actualizaciones.
- Todo elemento en D3.js puede generar eventos.
- Para crear un botón, se genera texto y se le asigna un pop-up como resultado del evento.
- Se actualizan los valores del gráfico y se adaptan altura y anchura al nuevo dataset.
- Se actualiza el texto del gráfico con el nuevo dataset.
- Se elimina el botón después de pulsarlo.
Transiciones y Movimiento
- Las transiciones dan vida a los gráficos y se pueden hacer con una simple línea de código en D3.js:
transition()
. - Se controla la duración de las transiciones utilizando
duration(milisegundos)
. - Se aplica la transición al texto de las barras.
- Se modifica la función ease() para regular la transición y hacerla lineal.
- Se retrasa la animación con la función
delay(time_miliseconds)
.
Añadiendo Interacción a los Gráficos
- Los modos de interaccionar con un gráfico son diversos.
- Se puede hacer que reaccione el valor al pulsar una barra.
- Se puede mostrar el valor de la barra en una ventana emergente.
- Se puede cambiar el color de las barras al pasar el ratón por encima, utilizando los eventos
mouseover
ymouseout
.
Exportando el Resultado a PDF, Bitmaps y SVG
- Se explora la utilidad de exportar el gráfico a otros formatos desde el navegador.
- La primera opción es la captura de pantalla (Print Screen en PC y Command + Shift + 3 en MAC), generando un archivo Bitmap o PNG.
- Se puede imprimir en PDF seleccionando dicha opción en la pantalla de impresión.
- La opción más interesante es trabajar con SVG para modificar y escalar la imagen en Photoshop.
- Para ello, se inspecciona el elemento en el navegador y se selecciona el código entre las etiquetas
<svg>...</svg>
. - Se copia el código en un archivo nuevo con la extensión .svg, que se puede abrir con Acrobat Reader o Photoshop.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Aprende a usar D3.js para crear visualizaciones dinámicas. Se explica el Force Layout para representar relaciones entre entidades en un grafo. Se cubrirá la actualización de datos, transiciones y movimiento para dinamizar las visualizaciones.