2013-12-09 5 views
0

저는 d3을 사용하여 그려지는 세로선이 있습니다. 바코드처럼 여러 번 반복 해보고 싶다고합시다. 어떻게해야합니까?d3 - 선을 n 번 그립니다.

나는 그것이 for을 사용하여 완료되어야한다는 것을 알고 있지만 어떻게해야하는지 전혀 모른다.

제안 사항은 매우 유용합니다. 사전에

 
var height = 500; 
    var width = 500; 

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


    var line = svgContianer.append("line") 
          .attr("x1", 20) 
          .attr("x2", 20) 
          .attr("y1", 100) 
          .attr("y2", 0) 
          .attr("stroke", "#000") 
          .attr("stroke-width", 2) 

감사 :

FIDDLE

여기에 코드입니다.

답변

1

for 루프를 사용하는 것보다 더 좋은 옵션이 있습니다. 그러나, 어떤 경우에 here you go

var height = 500; 
var width = 500; 
var count = 10, padding = 5; 
var svgContianer = d3.select("body") 
         .append("svg") 
         .attr("width", width) 
         .attr("height", height) 

for(var i = 0; i < count; ++i) { 
    var line = svgContianer.append("line") 
          .attr("x1", padding*i) 
          .attr("x2", padding*i) 
          .attr("y1", 100) 
          .attr("y2", 0) 
          .attr("stroke", "#000") 
          .attr("stroke-width", 2) 
} 
+0

놀라운! 고맙습니다. –

+0

한 번 더 도움이 필요합니다. 너 나 좀 도와 줄 수있어? –

+0

예! 말해봐 .. –

2

는 바코드, 그것의 폭 (데이터) 다음에 D3의 enter 단계를 사용하여 각 행 (요소)를 결합하는 것입니다 할 수있는 D3 방법을 만들려면 그들을 구성하십시오.

또한 바코드의 경우 shape-renderingcrispEdges으로 설정하는 것이 좋습니다.

Demo.

var height = 500; 
var width = 500; 

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


var line = svgContianer.selectAll("line") 
    .data([1, 2, 1, 3, 2, 1, 3, 2, 1, 3, 2, 4, 3, 1, 2, 2, 2, 1, 3, 2]) 
    .enter() 
    .append("line") 
    .attr("x1", function (d, i) { 
     return 20 + 5 * i; 
    }) 
    .attr("x2", function (d, i) { 
     return 20 + 5 * i; 
    }) 
    .attr("y1", 100) 
    .attr("y2", 0) 
    .attr("stroke", "#000") 
    .attr("stroke-width", function (d) { 
     return d; 
    }) 
+0

사실 바코드가 아닙니다. . 종류는 바코드를 좋아합니다. 어쨌든 당신이 대답하는 것도 나를 위해 유용했습니다. +1 투표. 한 번 더 도움이 필요해. 너 나 좀 도와 줄 수있어? –