Error: <path> attribute d: Expected number, "MNaN,NaNLNaN,NaNZ"

1k views Asked by At

am creating a d3.js and react pie chart and the path element is giving an error on the d attribute expecting a number.

Error: attribute d: Expected number, "MNaN,NaNLNaN,NaNZ".

am looking at my code and I can't figure out the problem.

import React from 'react'
import * as d3 from 'd3'

function Pie() {

    const data = [{name: 'simba', value: 60}, {name: 'kiki', value: 40}]
    const pieData = d3.pie().value(d => d.value)(data)

    const arc = d3.arc()
        .innerRadius(0)
        .outerRadius(50)
        
    return (
        <svg>
            <g transform={`translate(50, 50)`} >
                <path d={arc(pieData)}/>
            </g>  
        </svg>
    )
}

export default Pie 
2

There are 2 answers

0
Dan On

You need a separate path element for each slice of the pie chart. Right now, you have only one path element and you are passing the entire pieData array to arc. Instead arc should only be passed a single element of pieData.

1
Phares On
 import React from 'react'
    import * as d3 from 'd3'
    
    function Pie() {
    
        const data = [{name: 'simba', value: 60}, {name: 'kiki', value: 40}]
        const pieData = d3.pie().value(d => d.value)(data)
    
        const arc = d3.arc()
            .innerRadius(0)
            .outerRadius(50)
            
        return (
            <svg>
                <g transform={`translate(50, 50)`} >
                                       
                    {pieData.map((item) => (
                       <g>
                           <path d={arc(item)} stroke="white"/>
                       </g>
                    ))}               
                </g>  
            </svg>
        )
    }
    
    export default Pie