2016-10-13 4 views
1

xとyの2つの尺度が作成されていて、どちらも機能しています。今ではサークルの半径で同じことをしようとすると表示されず、エラーも発生しません。問題になる可能性があります。以下れるcodepen:http://codepen.io/juanf03/pen/rrKxgdD3.js:円の半径の尺度に円が表示されていません

var 
    dataset = [ 
         [ 5,  20 ], 
         [ 480, 90 ], 
         [ 250, 50 ], 
         [ 100, 33 ], 
         [ 330, 95 ], 
         [ 410, 12 ], 
         [ 475, 44 ], 
         [ 25, 67 ], 
         [ 85, 21 ], 
         [ 220, 88 ] 
        ]; 
    var h=300,w=500; 
    var padding = 20; 
    var 
    xScale = d3.scaleLinear().domain([0, d3.max(dataset, 
    function(d) { return d[0]; })]).range([padding, w-padding*2]); 

    var yScale= d3.scaleLinear() 
       .domain([0,d3.max(dataset,function(d){ 
        return d[1]; 
       })]).range([h-padding,padding]); 

    var 
    rScale = d3.scaleLinear()      .domain([0, d3.max(dataset, 
    function(d) { 
    return 
    d[1]; })]).range([2, 5]); 

    var svg=d3.select("body") 
       .append("svg") 
       .attr("width",w) 
       .attr("height",h); 

    svg.selectAll("circle") 
     .data(dataset) 
     .enter() 
     .append("circle") 
     .attr("cx",function(d){ 
     return xScale(d[0]); 
     }).attr("cy",function(d){ 
     return yScale(d[1]); 
     }).attr("r",function(d,i){ 
     return rScale(d[1]); 
     }); 

    svg.selectAll("text") 
     .data(dataset) 
     .enter() 
     .append("text") 
     .text(function(d){ 
     return `${d[0]} , ${d[1]}`; 
    }) .attr("x", function(d) { 
    return xScale(d[0]);}) 
    .attr("y", function(d) { 
    return yScale(d[1]);}) 
    .attr("font-family", "sans-serif") 
    .attr("font-size","11px") 
    .attr("fill","red"); 


var 
xAxis = d3.svg.axis()     .scale(xScale)    .orient("bottom"); 

svg.append("g") 
    .call(xAxis); 

答えて

1

はあなたのコンソールを点検:あなたはNaNがたくさんあります。そして彼らはあなたのrScaleから来ます。

これは問題です.JavaScriptでは、return文の後に改行が続くと、その戻り後にセミコロンを挿入する必要があることがブラウザに示されます。だから、あなたが書くとき:

var rScale = d3.scaleLinear() 
    .domain([0, d3.max(dataset, function(d) { 
     return 
      d[1]; })]) 
    .range([2, 5]); 

あなたが実際に書いている:

return; 
    d[1]; 

を私は一つのことをやった:ちょうど新しい行を削除:ここ

return d[1]; 

はあなたcodepenです:http://codepen.io/anon/pen/yaEwZW?editors=1010

+0

コードが完全に機能しているようです。しかし、x軸は何らかの理由でまだ表示されていません。私はそれについて言及することを忘れた.... – Juan

+0

それは*別の問題です。ここでは、一度に1つの問題と問題ごとに1つの問題を扱います。別の質問を投稿することをお勧めします。 –

関連する問題