2017-06-18 11 views
0

私はd3js v3の新機能です。データに応じて線があり、サークルが埋め込まれた新しいプログラムを試していました。D3jsは、ドラッグアンドドロップで円に線を動的に付けます。

これはこれまで私が行ってきたことです。

var width = 500, 
 
    height = 500; 
 

 
var animals = ['dog', 'cat', 'bat']; 
 
var fruits = ['apple', 'banana']; 
 

 

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

 
var line1 = svg.append("line") 
 
    .attr("x1", 350) 
 
    .attr("y1", 5) 
 
    .attr("x2", 350) 
 
    .attr("y2", 350) 
 
    .attr("stroke-width", 2) 
 
    .attr("stroke", "black"); 
 

 
var line2 = svg.append("line") 
 
    .attr("x1", 80) 
 
    .attr("y1", 5) 
 
    .attr("x2", 100) 
 
    .attr("y2", 350) 
 
    .attr("stroke-width", 2) 
 
    .attr("stroke", "black"); 
 

 
var animal_scale = d3.scale.ordinal() 
 
    .domain(animals) 
 
    .rangePoints([5, 350],.2); 
 

 
var fruit_scale = d3.scale.ordinal() 
 
    .domain(fruits) 
 
    .rangePoints([5, 350],.2); 
 

 

 
var animal_circles = svg.selectAll('circle') 
 
    .data(animals) 
 
    .enter() 
 
    .append('circle') 
 
    .attr('cx', function(d) { 
 
    // is there a way to calc it automatically according to line 1 
 
    }) 
 
    .attr('cy', function(d) { 
 
    return animal_scale(d); 
 
    }) 
 
    .attr('id', function(d) { 
 
    return d; 
 
    }) 
 
    .attr('r', 20); 
 

 
var fruits_circles = svg.selectAll('circle') 
 
    .data(fruits) 
 
    .enter() 
 
    .append('circle') 
 
    .attr('cx', function(d) { 
 
    // is there a way to calc it automatically according to line 2 
 
    }) 
 
    .attr('cy', function(d) { 
 
    return fruit_scale(d); 
 
    }) 
 
    .attr('id', function(d) { 
 
    return d; 
 
    }) 
 
    .attr('r', 20);
<!DOCTYPE html> 
 
<html> 
 
<meta charset=utf-8> 
 

 
<head> 
 
    <title></title> 
 
</head> 
 

 
<body> 
 

 
    <script src="https://d3js.org/d3.v3.min.js"></script> 
 

 
</body> 
 

 
</html>

私はいくつかのソースを見て、それのほとんどを理解する新しい、そのちょっとハードであること。最終的には、プロジェクトの最後に行間を移動してドラッグできるようにしたいと思います。現在のコードにはいくつかの問題があります。第2セットの円も表示されません。

誰かがこれを行う方法をさらに理解するのを手伝ってもらえますか?それは私が学ぶのに最適な方法です。

答えて

0

クラス名とセットデータでオブジェクトを選択できます。ここに、ドラッグアンドドロップのための私の速い解決策があります:jsFiddledragの機能を変更して、cxの位置に制限を追加する機能

関連する問題