본문으로 바로가기

D3.js 공부 5 - SVG

category 웹/JavaScript,JQurey 2019. 4. 3. 19:35

SVGXML기반 백터 그래픽 형식입니다.

 

우선 SVG를 이용하려면 

 

SVG로 width와 height를 지정해주고 SVG 이미지를 만듭니다.

 

<svg width = "300" height = "300">

</svg>

만약에 (0,0)을 기준으로 (100,100)에서 (200,200)으로 가는 우하향 선을 그리고 싶다면

 

앞서 만든 svg이미지 안에 <line>태그를 입힙니다.

 

<svg width = "300" height = "300">
            <line x1 = "100" y1 = "100"  x2 = "200" y2 = "200" style = "stroke:rgb(255,0,0);
           stroke-width:2"/>
</svg>

<line> 태그 내 x1과 y1, x2와 y2는 좌표 속성이고 style속성으로 빨간색 선과 굵기를 지정해줍니다.

 

이제 D3.js로 SVG를 사용해봅시다.

 

우선 컨테이너를 지정해줍니다.

 

<div id = "svgcontainer"></div>

앞서 배운 select와 append를 통해 svg를 주입해주고 attr과 style을 통해 추가해줍니다.

 

var width = 300;
var height = 300;
var svg = d3.select("#svgcontainer")
   .append("svg").attr("width", width).attr("height", height);

select로 컨테이너 지정해주고 append로 svg를 추가하며 svg의 속성 너비 높이를 지정해줍니다.

 

추 후 svg변수를 통해 그림을 그리겠죠.

 

svg.append("line")
   .attr("x1", 100)
   .attr("y1", 100)
   .attr("x2", 200) 
   .attr("y2", 200)
   .style("stroke", "rgb(255,0,0)")
   .style("stroke-width", 2);

이런 식으로 svg로 append를 해서 line을 추가해주고 line태그의 속성 스타일을 지정해줍니다.

 

결과는 위와 같습니다.

 

사각형

 

사각형은 <line>이 아닌 <rect>로 지정해주며 속성 x와 y는 왼쪽 위 모서리 x좌표 y좌표입니다.

 

width는 사각형 가로 길이 height는 사각형 높이입니다.

 

var width = 300;
var height = 300;
//Create SVG element
var svg = d3.select("#svgcontainer")
     		.append("svg")
            .attr("width", width)
            .attr("height", height);
         //Create and append rectangle element
         svg.append("rect")
            .attr("x", 20)
            .attr("y", 20)
            .attr("width", 200)
            .attr("height", 100)
            .attr("fill", "green");

fill 속성은 색으로 채워주기입니다.

 

결과는

원 

<circle cx = "200" cy = "50" r = "20"/>

즉 원의 중심은 (200,50) 반지름은 20입니다.

 

이를 마찬가지로 D3.js를 이용하여 만들어보면

 

         var width = 300;
         var height = 300;
         //Create SVG element
         var svg = d3.select("#svgcontainer")
            .append("svg")
            .attr("width", width)
            .attr("height", height);
         //Append circle 
         svg.append("circle")
            .attr("cx", 200)
            .attr("cy", 50)
            .attr("r", 20)
            .attr("fill", "green");

타원형

 

<ellipse cx = "200" cy = "50" rx = "100" ry = "50"/>

즉 타원의 중심은 (200,50)이고 rx는 x의 반지름 ry는 y의 반지름입니다.

 

         var width = 300;
         var height = 300;
         var svg = d3.select("#svgcontainer")
            .append("svg")
            .attr("width", width)
            .attr("height", height);
         svg.append("ellipse")
            .attr("cx", 200)
            .attr("cy", 50)
            .attr("rx", 100)
            .attr("ry", 50)
            .attr("fill", "green")

 

' > JavaScript,JQurey' 카테고리의 다른 글

D3.js 공부 7 - transition(전환)  (0) 2019.04.10
D3.js 공부 6 - SVG 변환  (0) 2019.04.10
D3.js 공부 4 - 데이터 조인 메서드  (0) 2019.04.02
D3.js 공부 3 - 데이터 조인  (0) 2019.04.02
D3.js 공부 2 - 선택자  (0) 2019.03.31