화살표를 사용하여 세 가지 기본 세관 모양을 연결하려고하는데이 arrow을 참조로 사용했습니다.d3의 화살표를 사용하여 도형을 연결하십시오.
어떤 모양을 움직여도 lucidchart의 동작을 복제하고 싶습니다. 강제 레이아웃을 사용하여 많은 예제를 보았습니다.하지만 그 중 제가 시도하려고하는 것에 대해 좋은 후보인지 확실하지 않습니다. 달성, 그래서 어떤 지침을 주시면 감사하겠습니다.
var data =[{"x":"100.0","y":"100.0","name":"shape-0","id":"543fe9949382ed4a16c38cf3","type":"startEvent","index":0},{"x":"610","y":"100.0","name":"shape-1","id":"543fe9949382ed4a16c38cf5","type":"endEvent","index":1},{"x":"318","y":"93","name":"first task","id":"543fe9a09382ed4a16c38cf6","type":"task","index":2}];
var links = [
{"source":{"x":136,"y":118},
"target":{"x":318,"y":118}},
{"source":{"x":428,"y":118},
"target":{"x":610,"y":118}}];
var node = svg.selectAll('g').data(data)
.enter()
.append(function(d){
return shapes[d.type](d).node();
});
var link = svg.selectAll('.link')
.data(links).enter().append('g').attr('class', 'node')
.append('line')
.attr('class','path')
.style('stroke-width', 2)
.attr('marker-end', 'url(#arrow)');
link.selectAll("line").attr("x1", function(d){
return d.source.x;
}).attr("y1", function(d){
return d.source.y;
}).attr("x2", function(d){
return d.target.x;
}).attr("y2", function(d){
return d.target.y;
})
//arrows
svg.append('svg:defs').append('svg:marker')
.attr('id', 'arrow').attr('viewBox', '0 0 10 10')
.attr('refX', 0).attr('refY', 5)
.attr('markerUnits', 'strokeWidth')
.attr('markerWidth', 8)
.attr('markerHeight', 6)
.attr('orient', 'auto')
.append('svg:path')
.attr('d', 'M 0 0 L 10 5 L 0 10 z');
svg.append('line')
.attr('x1', 5)
.attr('x2', 50)
.attr('y1', 5)
.attr('y2', 50)
.style('stroke', 'black')
.attr('stroke-width', 2)
.attr('marker-end', 'url(#arrow)');
이 참조 할 수 fiddle입니다 :
이
내 코드입니다. 미리 감사드립니다.
어떤 종류의 레이아웃을 만드시겠습니까? 힘에 의한 그래프? 레이아웃을 사용하려고 한 것처럼 보이지 않습니다. 어디에도 "d3.layout. [something]"이 보이지 않습니다. 당신이 제공 한 두 가지 fiddles를 비교한다면 그것은 가장 큰 차이점입니다. – McTalian
Lucidcharts가 어떻게 동작하는지 살펴보면 간단한 드래그 가능한 노드가있는 트리 레이아웃이 필요할 것이라고 생각합니다. 매력적인 선은 내 프로젝트 중 하나를 생각하게 만들었습니다. http://jsfiddle.net/mctalian/rx27oLgn/ 데이터를 재구성하거나 "플랫"에서 "인터리브"로 변경하는 기능이 있어야합니다 (내가 찾은 것에 대한 링크를 제공 할 수 있습니다. 그것은 다음 단계 중 하나입니다.) 그러나 그 후에는 당신이하고 싶은 일을하기가 아주 쉬워야합니다. – McTalian
레이아웃을 아직 구현하지 않았습니다. d3을 사용하여 이러한 동작을 구현하는 방법이없는 경우 어떤 레이아웃이 적합 할 수 있는지에 관해서는 몇 가지 지침이 필요합니다. –