2017-10-06 18 views
0

typescriptとd3を使って円グラフを作成しようとしています。 しかし、空白の画面が表示されています。誰かを助けることができますか?私はd3とtypescriptの両方に新しい。TypeScriptとD3で円グラフを作成

ファイルがありません。tsconfig.jsonファイルはありません。私は、tscコマンドを使って.tsファイルをコンパイルし、対応する.jsファイルをHTMLにリンクするだけです。ここで

はtypescriptですコードです:

interface Data { 
      quantity: number; 
      category: string; 
     } 


let testData: Data[] = [ 
     { 
      quantity: 10, 
      category: 'a' 
     }, 
     { 
      quantity: 20, 
      category: 'b' 
     }, 
     { 
      quantity: 10, 
      category: 'c' 
     }, 
     { 
      quantity: 100, 
      category: 'd' 
     }, 
     { 
      quantity: 500, 
      category: 'e' 
     } 
    ]; 

drawChart(testData); 

function drawChart(data: Data[]) { 

    let width = 400, 
     height = 400, 
     radius = Math.min(width, height)/2, 
     colourValues = d3.scale.category20c(); 

    let arc = d3.svg.arc<d3.layout.pie.Arc<Data>>() 
     .innerRadius(radius - 70) 
     .outerRadius(radius - 0); 

    let pie = d3.layout.pie<Data>().value((d: Data):number => d.quantity); 


    let fill = (d: d3.layout.pie.Arc<Data>): string => colourValues(d.data.category); 
    let tf = (d: d3.layout.pie.Arc<Data>): string => `translate(${arc.centroid(d)})`; 
    let text = (d: d3.layout.pie.Arc<Data>): string => d.data.category; 

    let svg = d3.select('.pie-chart').append('svg') 
     .attr('width', width) 
     .attr('height', height) 
     .append('g') 
     .attr('transform', 'translate(' + width/2 + ',' + height/2 + ')'); 

    let g = svg.selectAll('.arc') 
     .data(pie(data)) 
     .enter().append('g').attr('class', 'arc'); 
    g.append('path').attr('d', arc).attr('fill', fill); 
    g.append('text').attr('transform', tf).text(text); 
} 

は、ここに私のHTMLです:

<head> 
    <script src="https://d3js.org/d3.v3.min.js"></script> 
    <script src="piechart1.js"></script>  
</head> 
<body> 
    <div class="pie-chart"></div> 
</body> 

答えて

0

要素が存在する前に、関数を呼び出している...あなたはスクリプトを移動した場合、実行の順序があるべきより良い:

<head> 
</head> 
<body> 
    <div class="pie-chart"></div> 
    <script src="https://d3js.org/d3.v3.min.js"></script> 
    <script src="piechart1.js"></script>  
</body> 
関連する問題