5.9 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7fab367417b2b2512bd8 | Añade atributos a los elementos del círculo | 6 | 301471 | add-attributes-to-the-circle-elements |
--description--
El último desafío creó los elementos circle
para cada punto en el dataset
y los agregó al lienzo SVG. Pero D3 necesita más información sobre la posición y el tamaño de cada circle
para mostrarlos correctamente.
Un circle
en SVG tiene tres atributos principales. Los atributos cx
y cy
son las coordenadas. Le dicen a D3 donde colocar el center de la forma en el lienzo SVG. El radio (atributo r
) da el tamaño del circle
.
Al igual que la coordenada rect
y
, el atributo cy
para un circle
se mide desde la parte superior del lienzo SVG, no desde abajo.
Los tres atributos pueden usar una función callback para establecer sus valores de forma dinámica. Recuerda que todos los métodos encadenados después de data(dataset)
se ejecutan una vez por elemento en dataset
. El parámetro d
en la función callback se refiere al elemento actual en dataset
, que es un arreglo para cada punto. Utiliza la notación de corchetes, como d[0]
, para acceder a los valores de ese arreglo.
--instructions--
Agrega los atributos cx
, cy
y r
a los elementos circle
. El valor de cx
debe ser el primer número en el arreglo para cada elemento en dataset
. El valor de cy
debe basarse en el segundo número del arreglo, pero asegúrese de mostrar el gráfico del lado derecho hacia arriba y no invertido. El valor de r
debe ser 5
para todos los círculos.
--hints--
Tu código debe tener 10 elementos circle
.
assert($('circle').length == 10);
El primer elemento circle
debe tener un cx
con valor de 34
, un cy
con valor de 422
y un r
con valor de 5
.
assert(
$('circle').eq(0).attr('cx') == '34' &&
$('circle').eq(0).attr('cy') == '422' &&
$('circle').eq(0).attr('r') == '5'
);
El segundo elemento circle
debe tener un cx
con valor de 109
, un cy
con valor de 220
y un r
con valor de 5
.
assert(
$('circle').eq(1).attr('cx') == '109' &&
$('circle').eq(1).attr('cy') == '220' &&
$('circle').eq(1).attr('r') == '5'
);
El tercer elemento circle
debe tener un cx
con valor de 310
, un cy
con valor de 380
y un r
con valor de 5
.
assert(
$('circle').eq(2).attr('cx') == '310' &&
$('circle').eq(2).attr('cy') == '380' &&
$('circle').eq(2).attr('r') == '5'
);
El cuarto elemento circle
debe tener un cx
valor de 79
, un cy
valor de 89
y un r
valor de 5
.
assert(
$('circle').eq(3).attr('cx') == '79' &&
$('circle').eq(3).attr('cy') == '89' &&
$('circle').eq(3).attr('r') == '5'
);
El quinto elemento circle
debe tener un cx
valor de 420
, un cy
valor de 280
y un r
valor de 5
.
assert(
$('circle').eq(4).attr('cx') == '420' &&
$('circle').eq(4).attr('cy') == '280' &&
$('circle').eq(4).attr('r') == '5'
);
El sexto elemento circle
debe tener un cx
con valor de 233
, un cy
con valor de 355
y un r
con valor de 5
.
assert(
$('circle').eq(5).attr('cx') == '233' &&
$('circle').eq(5).attr('cy') == '355' &&
$('circle').eq(5).attr('r') == '5'
);
El séptimo elemento circle
debe tener un cx
con valor de 333
, un cy
con valor de 404
y un r
con valor de 5
.
assert(
$('circle').eq(6).attr('cx') == '333' &&
$('circle').eq(6).attr('cy') == '404' &&
$('circle').eq(6).attr('r') == '5'
);
El octavo elemento circle
debe tener un cx
con valor de 222
, un cy
con valor de 167
y un r
con valor de 5
.
assert(
$('circle').eq(7).attr('cx') == '222' &&
$('circle').eq(7).attr('cy') == '167' &&
$('circle').eq(7).attr('r') == '5'
);
El noveno elemento circle
debe tener un cx
con valor de 78
, un cy
con valor de 180
y un r
con valor de 5
.
assert(
$('circle').eq(8).attr('cx') == '78' &&
$('circle').eq(8).attr('cy') == '180' &&
$('circle').eq(8).attr('r') == '5'
);
El décimo elemento circle
debe tener un cx
con valor de 21
, un cy
con valor de 377
y un r
con valor de 5
.
assert(
$('circle').eq(9).attr('cx') == '21' &&
$('circle').eq(9).attr('cy') == '377' &&
$('circle').eq(9).attr('r') == '5'
);
--seed--
--seed-contents--
<body>
<script>
const dataset = [
[ 34, 78 ],
[ 109, 280 ],
[ 310, 120 ],
[ 79, 411 ],
[ 420, 220 ],
[ 233, 145 ],
[ 333, 96 ],
[ 222, 333 ],
[ 78, 320 ],
[ 21, 123 ]
];
const w = 500;
const h = 500;
const svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
// Add your code below this line
// Add your code above this line
</script>
</body>
--solutions--
<body>
<script>
const dataset = [
[ 34, 78 ],
[ 109, 280 ],
[ 310, 120 ],
[ 79, 411 ],
[ 420, 220 ],
[ 233, 145 ],
[ 333, 96 ],
[ 222, 333 ],
[ 78, 320 ],
[ 21, 123 ]
];
const w = 500;
const h = 500;
const svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("cx", (d) => d[0])
.attr("cy", (d) => h - d[1])
.attr("r", 5)
</script>
</body>