Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
D3.js rect no display on chart

I started the D3.js challenge on FreeCodeCamp, the problem is that I solved it with the chart but it only gives me a display on the rectum, only one with the width and height that it I put, I'll show the code below.

The entire code on

<script>

    //set d3
    var w = 1000, h  = 500;
    var padding = 50;
    var svg = d3.select('body')
                .append('svg')
                .attr('width', w)
                .attr('height', h)
    
    //title
    svg.append('text')
        .attr('x', w / 2)
        .attr('y', 50)
        .text('United States GDP')


    fetch('https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json')
    .then((result)=>result.json())
    .then((data)=>{

        var the_data = data['data']

        //get vals
        var get_max = d3.max(data['data'])
        var get_mix = d3.min(data['data'])

        //for x
        var max_x = Number(get_max[0].split('-')[0])
        var min_x = Number(get_mix[0].split('-')[0])

        //for y
        var max_y = get_max[1]
        var min_y = get_mix[1]


        var xScale = d3.scaleLinear()
                        .domain([min_x, max_x])
                        .range([padding, w-padding])

        var yScale = d3.scaleLinear()
                        .domain([min_y, max_y])
                        .range([h-padding, padding])


        //the_chars
        for(var i in the_data){
            var get_year = Number(the_data[i][0].split('-')[0])
            the_data[i][0] = get_year
        }

        svg.selectAll('rect')
            .data(the_data)
            .enter()
            .append('rect')
            .attr("x", (d) => { xScale(d[0]) })
            .attr('y', (d)=>{ yScale(d[1]) })
            .attr("width", 200)
            .attr("height", 20)

        //axis
        const xAxis = d3.axisBottom(xScale);
        const yAxis = d3.axisLeft(yScale);

        //display axis
        svg.append("g")
        .attr("transform", "translate(0," + (h - padding) + ")")
        .call(xAxis);

        svg.append('g')
        .attr('transform', 'translate(' + padding + ', 0)')
        .call(yAxis)




    })

Now, what I need to do to display the charts!

I mention that the script tags are embedded in the body

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

  1. Problem: Arrow functions without a return value. Solution: Instead use an explicit or an implicit return.
.attr("x", (d) => { xScale(d[0]) }) // returns undefined
.attr("x", (d) => xScale(d[0])) // implicit return
.attr("x", (d) => { return xScale(d[0]) }) // explicit return
  1. Problem: Fixed height value. Solution Evaluate the height of each based on the GDP value (d[1]) instead.
.attr('height', 20) // fixed height
.attr('height', d => yScale(min_y) - yScale(d[1]))
// subtract from min range to account for padding and inverted y coordinates in SVG

Full solution in this codepen

Solution screenshot

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda