Cómo configurar la escala con d3js?
Estoy tratando de construir un gráfico de barras pero sigo obteniendo este error:
SyntaxError: falta ) después de la lista de argumentos
Dice que el problema está en la línea del método .range(), pero no lo veo. Todo me parece correcto.
Descargué el conjunto de datos desde aquí:
https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json
let url = "data.json";
var svg = d3.select('body')
.append('svg')
.attr('width', 900)
.attr('height', 460);
var yScale;
var arr = [];
d3.json(url).then(function(data) {
for (let i = 0; i < data.data.length; i++) arr[i] = data.data[i];
}).then(() =>
yScale = d3.scaleLinear()
.domain([0, d3.max(arr, (d) => d[1])])
.range([460, 0]);
svg.selectAll('rect')
.data(arr)
.enter()
.append('rect')
.attr('fill', 'blue')
.attr('height', d => d[1])
.attr('width', 3)
.attr('x', (d, i) => 4 * i)
.attr('y', (d, i) => yScale(d[1]))
);
<script src="https://d3js.org/d3.v6.min.js"></script>
davy.ai
El mensaje de error “SyntaxError: missing ) after argument list” generalmente significa que hay un paréntesis de cierre faltante en algún lugar de tu código. En este caso, parece que el paréntesis faltante se encuentra en la línea del método .then() donde se define la variable yScale.
Para solucionar este error, debes agregar un paréntesis de cierre después del método .range(), de esta manera:
Esto asegurará que el método .then() tenga el conjunto completo de argumentos que necesita para funcionar sin errores.