Podcast
Questions and Answers
¿Qué es el input domain?
¿Qué es el input domain?
- Es el dominio de datos que utilizamos para definir el tÃtulo de una gráfica.
- Es el rango de valores que nos da nuestra fuente de datos. (correct)
- Es el rango de valores que definimos para nuestra escala.
- Ninguna de las anteriores.
¿Qué es el output range?
¿Qué es el output range?
- Es la leyenda de nuestra gráfica.
- Es el rango de valores que nos da nuestra fuente de datos.
- Ninguna de las anteriores. (correct)
- Es la escala que utilizaremos en nuestra gráfica.
¿Cuál es el resultado al ejecutar estas sentencias?
var scale = d3.scale.linear();
scale(20)
¿Cuál es el resultado al ejecutar estas sentencias?
var scale = d3.scale.linear();
scale(20)
- 0,2
- 0,02
- 2
- 20 (correct)
¿Cuál es el resultado al ejecutar este código?
var scale = d3.scale.linear()
.domain([100, 500])
.range([10, 350]);
scale (100);
¿Cuál es el resultado al ejecutar este código?
var scale = d3.scale.linear()
.domain([100, 500])
.range([10, 350]);
scale (100);
¿Cuál es el resultado al ejecutar este código?
var dataset = [
[5, 20], [480, 90], [250, 50], [100, 33], [330, 95],
[410, 12], [475, 44], [25, 67], [85, 21], [220, 88]
];
d3.max(dataset, function(d) {
return d[0]; // References first value in each sub-array
});
¿Cuál es el resultado al ejecutar este código?
var dataset = [
[5, 20], [480, 90], [250, 50], [100, 33], [330, 95],
[410, 12], [475, 44], [25, 67], [85, 21], [220, 88]
];
d3.max(dataset, function(d) {
return d[0]; // References first value in each sub-array
});
¿Qué es lo que hace left
en el siguiente código?
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(5);
¿Qué es lo que hace left
en el siguiente código?
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(5);
¿Qué es lo que hace este código?
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(5); //Set rough # of ticks
¿Qué es lo que hace este código?
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(5); //Set rough # of ticks
¿Qué es lo que hace este código?
svg.append("g")
.attr("class", "axis")
.call(xAxis);
¿Qué es lo que hace este código?
svg.append("g")
.attr("class", "axis")
.call(xAxis);
¿Qué nos dibujará el siguiente código?
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(5);
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding + ",0)")
.call(yAxis);
¿Qué nos dibujará el siguiente código?
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(5);
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding + ",0)")
.call(yAxis);
Flashcards
¿Qué son las escalas en D3.js?
¿Qué son las escalas en D3.js?
Funciones que relacionan un dominio de entrada con un rango de salida.
¿Qué es el input domain?
¿Qué es el input domain?
Referencia a los valores de entrada del dataset.
¿Qué es el output range?
¿Qué es el output range?
Son los lÃmites que definimos para mostrar los datos en una visualización.
¿Qué es la normalización?
¿Qué es la normalización?
Signup and view all the flashcards
¿Qué hace d3.scale.linear()
?
¿Qué hace d3.scale.linear()
?
Signup and view all the flashcards
¿Qué hace scale.domain([min, max])
?
¿Qué hace scale.domain([min, max])
?
Signup and view all the flashcards
¿Qué hace scale.range([min, max])
?
¿Qué hace scale.range([min, max])
?
Signup and view all the flashcards
¿Qué hace d3.max(dataset)
?
¿Qué hace d3.max(dataset)
?
Signup and view all the flashcards
¿Qué hace d3.min(dataset)
?
¿Qué hace d3.min(dataset)
?
Signup and view all the flashcards
¿Qué hace d3.svg.axis()
?
¿Qué hace d3.svg.axis()
?
Signup and view all the flashcards
¿Qué hace xAxis.scale(xScale)
?
¿Qué hace xAxis.scale(xScale)
?
Signup and view all the flashcards
¿Qué hace xAxis.orient('bottom')
?
¿Qué hace xAxis.orient('bottom')
?
Signup and view all the flashcards
¿Qué hace svg.append('g').call(xAxis)
?
¿Qué hace svg.append('g').call(xAxis)
?
Signup and view all the flashcards
¿Cómo se personaliza la apariencia del eje?
¿Cómo se personaliza la apariencia del eje?
Signup and view all the flashcards
¿Qué hace attr('transform', 'translate(x, y)')
?
¿Qué hace attr('transform', 'translate(x, y)')
?
Signup and view all the flashcards
¿Qué hace ticks(5)
?
¿Qué hace ticks(5)
?
Signup and view all the flashcards
¿Qué son las escalas ordinales?
¿Qué son las escalas ordinales?
Signup and view all the flashcards
¿Qué hace d3.scale.ordinal()
?
¿Qué hace d3.scale.ordinal()
?
Signup and view all the flashcards
¿Qué hace domain(['A', 'B', 'C'])
en una escala ordinal?
¿Qué hace domain(['A', 'B', 'C'])
en una escala ordinal?
Signup and view all the flashcards
¿Qué hace range([0, 100, 200])
en una escala ordinal?
¿Qué hace range([0, 100, 200])
en una escala ordinal?
Signup and view all the flashcards
¿Qué hace rangeBands?
¿Qué hace rangeBands?
Signup and view all the flashcards
¿Qué hace rangeRoundBands?
¿Qué hace rangeRoundBands?
Signup and view all the flashcards
¿Qué hace d3.range(length)
?
¿Qué hace d3.range(length)
?
Signup and view all the flashcards
¿Qué hace rangeRoundBands([0, w], 0.05)
?
¿Qué hace rangeRoundBands([0, w], 0.05)
?
Signup and view all the flashcards
¿Qué hace xScale.rangeBand()
?
¿Qué hace xScale.rangeBand()
?
Signup and view all the flashcards
¿Qué hace svg.append('g')
?
¿Qué hace svg.append('g')
?
Signup and view all the flashcards
¿Qué hace attr('class', 'axis')
?
¿Qué hace attr('class', 'axis')
?
Signup and view all the flashcards
¿Para qué sirve yAxis
?
¿Para qué sirve yAxis
?
Signup and view all the flashcards
¿Para qué sirve xAxis
?
¿Para qué sirve xAxis
?
Signup and view all the flashcards
¿Cómo son las escalas Lineares?
¿Cómo son las escalas Lineares?
Signup and view all the flashcards
Study Notes
- D3.js facilita el dibujo de formas e interacción con colores para visualizar datos
- El foco está en el uso de escalas para manipulación de datos.
- Destaca la importancia de escalar imágenes y normalizar valores para asegurar la veracidad de la visualización y conectar con el usuario.
- Cubre la creación de ejes para completar los gráficos, algo que previamente se habÃa omitido.
- La percepción humana influye en como las visualizaciones son interpretadas, por lo tanto escalas incorrectas llevarán a conclusiones erróneas.
Escalas no Ordinales o LogarÃtmicas
-
Se priorizan las escalas lineales no ordinales o logarÃtmicas por su simplicidad.
-
Los conceptos clave son:
- Input range: se refiere a los valores de entrada, que son la fuente de datos del array.
- Output range: se refiere a los lÃmites definidos para mostrar los datos visualmente.
-
El "output range" permite mostrar los datos visualmente.
-
El proceso de normalización es distribuir los datos entre 0 y 1.
-
Para crear una escala en D3:
var scale = d3.scale.linear();
- para definir valores realmente útiles es necesario definir ambos valores para nuestro array
scale.domain([100, 500]);
scale.range([10, 350]);
-
Para simplificar, todo se puede hacer en una única sentencia:
var scale = d3.scale.linear().domain([100, 500]).range([10, 350]);
-
Para evitar definir manualmente el input domain, se recomiendan las funciones:
d3.min()
d3.max()
-
Define la función de máximo para el eje X:
var xScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })])
.range([0, w]);
-
Asegura que 0 en el input domain corresponda a 0 en el output range.
-
Es importante que el "range" sea realmente relevante para el eje.
-
Ajustar la función yScale para invertir la posición de los valores en el eje Y, de modo que los valores más altos se muestren en la parte superior del gráfico:
var yScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([0, h]);
-
Para evitar que los cÃrculos aparezcan cortados, hay que ajustar los márgenes de los gráficos.
-
Aplicar márgenes al rango:
var marginx = 30;
var marginy = 30;
var xScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })])
.range([0+marginx, w-marginx]);
var yScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([h-marginy, 0+marginy]);
Ejes
-
Dibujar un eje en D3:
var xAxis = d3.svg.axis();
- Para definir los valores, se debe pasar la escala:
xAxis.scale(xScale);
-
Para juntar todo:
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom");
- Para dibujar el eje, es necesario llamar a una función:
svg.append("g")
.call(xAxis);
- Para estilizar el eje con CSS, se asigna el atributo
class
al elementog
y se define una clase CSS llamadaaxis
.
svg.append("g")
.attr("class", "axis") //Asignar la clase “axis"
.call(xAxis);
- Para resolver el problema de que el eje aparezca abajo, utilizar la siguiente linea:
.attr("transform", "translate(0," + (h - padding) + ")")
-
Mueve el eje colocándolo en x=0 y ajustando su posición en el eje y a la altura del svg menos un padding.
-
Para limitar el número de divisiones en el eje X, se usa la función
ticks(5)
para mostrar solo cinco divisiones (0,100,200,300,400).
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(5); // # de sticks
- Código para definir el eje Y:
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(5);
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding + ",0)")
.call(yAxis);
Escala Ordinal
-
Las escalas ordinales distribuyen los datos en categorÃas en lugar de seguir una distribución continua.
-
En lugar de una evolución lineal, las escalas ordinales trabajan con categorÃas.
-
Para crear una gráfica de barras, se definen las siguientes variables y escalas:
var w = 600;
var h = 250;
var xScale = d3.scale.ordinal()
.domain(d3.range(dataset.length))
.rangeRoundBands([0, w], 0.05);
var yScale = d3.scale.linear()
.domain([0, d3.max(dataset)])
.range([0, h]);
- Modificar los ejes X e Y:
.attr("x", function(d, i) {
return xScale(i);
})
.attr("y", function(d) {
return h - yScale(d);
})
.attr("width", xScale.rangeBand())
.attr("height", function(d) {
return yScale(d);
})
-
Hay que definir el dominio y utilizar la función range
d3.range (dataset.length)
-
Para dividir la escala en el dominio:
(w - 0) / xScale.domain().length
-
Divide la escala en bandas basada en la longitud del dominio.
-
Además se puede incluir un pequeño espacio entre bandas para mejorar la estética con la función
rangeRoundBars
.
.rangeRoundBands([0, w], 0.05);
- La función
range banding
soporta funciones continuas siendo los valores discretos y los valores determinados con anterioridad.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.