4 hvid sum Visualización de datos con D3: CSV y JSON

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Qué tipo de archivos se utilizan comúnmente en este tema para trabajar con D3?

  • CSV y JSON (correct)
  • TXT y PDF
  • DOCX y XLSX
  • HTML y CSS

¿Qué representa SVG en el contexto de D3?

  • Sistema Vectorial Gráfico
  • Sintaxis Visual Gráfica
  • Gráficos Vectoriales Simples
  • Gráficos Vectoriales Escalables (correct)

¿Cuál es la función principal de d3.csv en D3.js?

  • Manipular elementos SVG
  • Renderizar elementos HTML
  • Crear gráficos de barras
  • Cargar y analizar archivos CSV (correct)

¿Qué dos atributos acepta la función d3.csv para procesar archivos?

<p>Ruta al archivo y función <em>callback</em> (D)</p> Signup and view all the answers

¿En qué se diferencia la función d3.json de d3.csv?

<p><code>d3.json</code> sirve para leer archivos JSON, mientras que <code>d3.csv</code> lee archivos CSV (B)</p> Signup and view all the answers

Al dibujar un círculo en SVG, ¿qué atributos indican las coordenadas de su centro?

<p>cx y cy (D)</p> Signup and view all the answers

Si deseas que el alto de una barra en un Bar Chart varíe según los datos del array, ¿qué propiedad CSS debes sobrescribir con D3?

<p>height (D)</p> Signup and view all the answers

¿Cuál es el propósito del atributo fill en un elemento SVG?

<p>Especificar el color de relleno del elemento (B)</p> Signup and view all the answers

En SVG, ¿cómo se controla la transparencia de un elemento?

<p>Utilizando colores en formato RGBA (D)</p> Signup and view all the answers

¿Qué función(es) de D3 se utiliza(n) para añadir elementos al DOM?

<p>append y enter (B)</p> Signup and view all the answers

¿En qué coordenada de un elemento SVG se inicia el dibujo?

<p>Esquina superior izquierda (B)</p> Signup and view all the answers

Si tienes un conjunto de datos con dos valores por cada entrada (por ejemplo, coordenadas x e y), ¿qué tipo de gráfico sería más adecuado para visualizar estos datos?

<p>Scatter Plot (A)</p> Signup and view all the answers

¿Cómo se puede añadir una clase CSS a un elemento SVG utilizando D3?

<p>Utilizando la función <code>attr('class', 'nombreDeLaClase')</code> (D)</p> Signup and view all the answers

En un Bar Chart creado con elementos div y D3, ¿cómo se determina la altura de cada barra?

<p>Usando la propiedad <code>height</code> en CSS y sobrescribiéndola con D3 (D)</p> Signup and view all the answers

Si un archivo CSV no se encuentra en la misma carpeta que el archivo HTML que lo carga con D3, ¿qué debes especificar en la función d3.csv?

<p>La ruta absoluta o relativa al archivo (A)</p> Signup and view all the answers

Si se está creando un Bar Chart con SVG y los datos están invertidos (barras dibujadas hacia abajo en lugar de hacia arriba), ¿qué atributo se debe ajustar y cómo?

<p>Ajustar el atributo <code>y</code> para invertir la dirección del dibujo (C)</p> Signup and view all the answers

En SVG, ¿cuál es el propósito del atributo stroke?

<p>Define el color del borde de la figura. (A)</p> Signup and view all the answers

Al crear un Scatter Plot con D3, ¿qué función se utiliza para asignar los valores del conjunto de datos a los atributos cx y cy de los círculos?

<p>Una función anónima dentro de <code>attr()</code> (B)</p> Signup and view all the answers

¿Qué limitación importante se debe tener en cuenta al trabajar con elementos SVG en D3?

<p>En SVG no existe el concepto de capas ni el eje Z. (A)</p> Signup and view all the answers

Para generar valores aleatorios para la altura de las barras en un Bar Chart, ¿qué función de JavaScript es más adecuada?

<p><code>Math.random()</code> (A)</p> Signup and view all the answers

Flashcards

SVG (Scalable Vector Graphics)

Lenguaje para gráficos vectoriales escalables en HTML.

Gráfico de barras (Bar Chart)

Gráfico que representa datos con barras rectangulares de alturas proporcionales a los valores que representan.

Diagrama de dispersión (Scatter Plot)

Gráfico que utiliza puntos para representar los valores de dos variables diferentes.

CSV

Formato de archivo que almacena datos en forma de texto plano, con valores separados por comas.

Signup and view all the flashcards

JSON

Formato de archivo que utiliza una estructura de pares clave-valor para almacenar datos.

Signup and view all the flashcards

Función Callback

Función que se ejecuta después de completar una tarea asíncrona.

Signup and view all the flashcards

Atributos width y height

Atributos utilizados para definir el ancho y la altura de un elemento SVG.

Signup and view all the flashcards

Fill

Propiedad para rellenar el interior de una forma.

Signup and view all the flashcards

Stroke

Propiedad para definir el color del contorno de una forma.

Signup and view all the flashcards

Opacity

Propiedad para ajustar la transparencia de un elemento.

Signup and view all the flashcards

Study Notes

Introducción y objetivos

  • Este tema introduce elementos esenciales para dibujar con D3 utilizando archivos CSV o JSON.
  • Se cubrirán elementos SVG en HTML y se crearán gráficos simples como Bar Charts y Scatter Plots con D3 y HTML.
  • El objetivo es experimentar con estilos gráficos y anotaciones, comenzando con lo simple y avanzando hacia la complejidad.
  • Se aconseja dominar los conceptos básicos antes de intentar modificaciones complejas para no complicar el aprendizaje.
  • Se recomienda practicar todas las instrucciones del código, usando herramientas como Brackets para repetir los pasos.
  • Entender las estructuras de datos JSON y CSV es crucial para la gestión y modificación de visualizaciones futuras.

Trabajar con diferentes estructuras de datos: JSON y CSV

  • Se comienza creando un archivo CSV llamado "comida.csv" en Brackets, que contiene datos sobre comida y preferencia.
  • Un ejemplo de archivo CSV sería:
    • Comida, Preferencia.
    • Manzana,9.
    • Huevos fritos, 10.
    • Ensalada, 5.
    • Galleta, 2.
    • Leche, 8.
  • La función d3.csv acepta dos atributos:
    • La ruta al archivo. Si el archivo no está en la misma carpeta que el HTML, puede haber errores.
    • La función callback, que se ejecuta si el archivo CSV se encuentra.
  • El proceso implica imprimir los valores del CSV iterando por filas y accediendo a los valores mediante las cabeceras.
  • Similar a CSV, se puede trabajar con archivos JSON.
  • Un ejemplo sería crear un archivo llamado "coordenadas.json" con datos de coordenadas.
[
  {
    "x_axis": 30,
    "y_axis": 30,
    "radius": 20,
    "color": "green"
  }, {
    "x_axis": 70,
    "y_axis": 70,
    "radius": 20,
    "color": "purple"
  }, {
    "x_axis": 110,
    "y_axis": 100,
    "radius": 20,
    "color": "red"
  }
]
  • Los objetos JSON se leen y se recorren de manera similar a CSV, utilizando la función d3.json en lugar de d3.csv.

Generar y dibujar con SVG

  • D3 es ideal para gestionar objetos gráficos como SVGs (Scalable Vector Graphics), aunque también se pueden usar elementos div.
  • Los SVG aseguran la máxima compatibilidad entre diferentes dispositivos y navegadores web.
  • Para crear un círculo SVG, se utilizan los atributos cx y cy para definir las coordenadas del centro y r para el radio.
<svg width="50" height="50">
  <circle cx="25" cy="25" r="22" fill="blue" stroke="gray" stroke-width="2"/>
</svg>
  • Es importante especificar los atributos width y height para los elementos SVG.
  • El elemento (0,0) representa la esquina superior izquierda.
  • Para un rectángulo, las coordenadas x e y indican la posición de la esquina superior izquierda.
<rect x="100" y="0" width="200" height="50"/>
  • Se pueden dibujar elipses especificando los radios en x (rx) e y (ry).
<ellipse cx="250" cy="25" rx="100" ry="25"/>
  • Para dibujar una línea, se define el punto inicial y final con el atributo stroke.
<line x1="0" y1="0" x2="500" y2="50" stroke="black"/>
  • Los elementos gráficos se pueden renderizar y se puede definir el estilo como en HTML, utilizando atributos como:
    • fill: Para rellenar, usando valores de CSS para los colores.
    • stroke: El color de la línea.
    • stroke-width: El ancho de la línea.
    • opacity: Un número entre 0.0 y 1.0.
  • Se puede utilizar CSS especificando una clase en el SVG.
  • En SVG, no existen capas ni la posibilidad de definir la posición en el eje z; todo se maneja en un plano bidimensional.
  • Para lograr efectos de superposición, se juega con el orden y la posición de las coordenadas x e y.
<rect x="0" y="0" width="30" height="30" fill="purple"/>
<rect x="20" y="5" width="30" height="30" fill="blue"/>
  • Se pueden utilizar colores en formato RGBA para añadir transparencia, donde el último valor indica el nivel de transparencia.
<circle cx="25" cy="25" r="20" fill="rgba(128, 0, 128, 1.0)"/>
<circle cx="50" cy="25" r="20" fill="rgba(0, 0, 255, 0.75)"/>
  • También se puede usar el atributo opacity directamente en el elemento SVG.
<circle cx="25" cy="25" r="20" fill="purple" stroke="green" stroke-width="10" opacity="0.9"/>

Bar Chart y Scatter Plot desde cero

  • Un Bar Chart y un Scatter Plot se pueden crear desde cero.
  • Inicialmente, se pueden usar elementos div en lugar de SVG.
  • Crear una barra con un elemento div requiere definir el estilo como display: inline-block.
<div style="display: inline-block; width: 20px; height: 75px; background-color: teal;"></div>
  • Para aplicar el mismo estilo a diferentes divs, se crea una clase en CSS.
div.bar {
  display: inline-block;
  width: 20px;
  height: 75px; /* We'll override height later */
  background-color: teal;
}
  • Luego, se referencia la clase en el div.
<div class="bar"></div>
  • Para crear múltiples barras con D3, se utiliza un array de datos.
function read(){
  d3.select("body").selectAll("div")
    .data(dataset)
    .enter()
    .append("div")
    .attr("class", "bar");
}
  • Para que la altura de cada barra varíe según el contenido del array, se sobrescribe el valor height en CSS con D3.
function read(){
  d3.select("body").selectAll("div")
    .data(dataset)
    .enter()
    .append("div")
    .attr("class", "bar")
    .style("height", function(d) {
      return d + "px";
    });
}
  • Para usar más valores, se puede generar un array con valores aleatorios.
var dataset = []; //Inicializar array vacio
for (var i = 0; i < 10; i++) { //Loop 10 veces
  var newNumber = Math.floor(Math.random() * 30);
  dataset.push(newNumber); //Añadir al array
}
  • Para crear barras con elementos SVG:
    • Primero, se define el tamaño SVG.
var w = 500;
var h = 100;
  • Luego, se crea el elemento SVG.
var svg = d3.select("body")
  .append("svg")
  .attr("width", w)
  .attr("height", h);
  • Se generan las barras creando rectángulos.
svg.selectAll("rect")
  .data(dataset)
  .enter()
  .append("rect")
  .attr("x", 0)
  .attr("y", 0)
  .attr("width", 20)
  .attr("height", 100);
  • Para crear múltiples barras con diferentes posiciones y alturas:
svg.selectAll("rect")
  .data(dataset)
  .enter()
  .append("rect")
  .attr("x", function(d, i) {
    return i * (w / dataset.length);
  })
  .attr("y", 0)
  .attr("width", w / dataset.length - 1)
  .attr("height", function(d) {
    return d;
  });
  • Para que el gráfico quede bien, se cambia el valor de "y" en cada elemento.
svg.selectAll("rect")
  .data(dataset)
  .enter()
  .append("rect")
  .attr("x", function(d, i) {
    return i * (w / dataset.length);
  })
  .attr("y", function(d) {
    return h - d;
  })
  .attr("width", w / dataset.length - 1)
  .attr("height", function(d) {
    return d;
  });
  • Atributo fill se puede utilizar para dar color a las barras. attr("fill", "teal");
  • También se puede usar gradiente:
.attr("fill", function(d) {
  return "rgb(0, 0, " + (d * 10) + ")";
})
  • Para poner el valor encima de las barras:
svg.selectAll("text")
  .data(dataset)
  .enter()
  .append("text")
  .text(function(d) {
    return d;
  })
  .attr("x", function(d, i) {
    return i * (w / dataset.length);
  })
  .attr("y", function(d) {
    return h - (d);
  });
  • Para Scatter Plot, se utiliza un array con coordenadas:
var dataset = [
  [5, 20], [480, 90], [250, 50], [100, 33], [330, 95], [410, 12], [475, 44],
  [25, 67], [85, 21], [220, 88]
];
  • La función es similar a la del Bar Chart, pero se utiliza "circle" en lugar de "rect".
svg.selectAll("circle") // <-- Cambiamos donde antes ponía "rect"
  .data(dataset)
  .enter()
  .append("circle")
  .attr("cx", function(d) {
    return d[0];
  })
  .attr("cy", function(d) {
    return d[1];
  })
  .attr("r", 5);
  • Para practicar, se recomienda usar archivos CSV y JSON para ambos gráficos.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser