Base/WEB

[WEB] D3.js 기본 개념 및 사용법 - 1

반응형

D3.js란?


D3.js는 웹브라우저 상에서 동적이고 인터렉티브 한 정보 시각화를 구현하기 위한 자바스크립트 라이브러리이다. D3.js는 프로토 비즈의 라이브러리로 정보 시각화 라이브러리이며, SVG와 HTML5, CSS 등 웹 표준에 기반해 구현되어 있다. 

jquery처럼 자바스크립트의 라이브러리중 하나이다.

 

 

 

기본적인 사용법


<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script src='https://d3js.org/d3.v4.min.js'> //이런식 으로 cdn 방식으로 d3.js를 불러온다.
  </script>
 </head>
 <body>
  </body>
</html>

 

 

 

 

D3 메소드


 

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script src='https://d3js.org/d3.v4.min.js'>
  </script>
 </head>
 <body>
  <p id='p01'>First Paragraph</p>
  <p id='p02'>Second Paragraph</p>
  <p class='p03'>Third Paragraph</p>
  <p class='p03'>Third Paragraph</p>

  <table border='1'>
  <tr><td>one</td><td>two</td></tr>
  <tr><td>three</td><td>four</td></tr>

  </table>
  <script>
  		// write your code here
		// select(tag), select(id), selectAll(selector)
		d3.select('p').style('color','blue') - 첫번째 p에 대해서만 접근
		d3.select('#p02').style('color','red') - # = id에 대해 접근
		d3.select('.p03').style('color','green') - .=class 에 대해 접근
		d3.selectAll('p').style('color','blue') - 전체 p에 대해 적용
		d3.selectAll('.p03').style('color','blue') - 전체 p03 를 가져와 을 찾아 적용
		d3.select('table').select('tr').select('td').style('background-color','blue')

  </script>
 </body>
</html>

정적인 페이지에서 일반적인 접근이다.

위의 코드 결과이다.

 

 

 

D3를 통한 동적인 페이지 생성


body부분에 값은 없지만 script부분에서 html에 들어가는 값을 추가하거나 삭제 , 수정할 수 있다. 이걸 동적으로 document를 제어한다고 한다.

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style>
  	.error{ # class errord의 style
		color : red;
	}
	</style>
  <script src='https://d3js.org/d3.v4.min.js'></script>
 </head>
 <body>
 	<div>
		<p></p>
	</div>
	<p><label>D3</label><input type='checkbox'/></p>
	<p><label>JQuery</label><input type='checkbox'/></p>

  <script>
  	// 동적으로 document를 제거하는 방법
  	// D3 manipulation function text(), append(), insert(), remove(),html(),attr(),property(),style(),classed()
	d3.select('div > p').text('this is sapmle text') // 이런 로드워킹 방식으로 해당 부분에 접근한뒤 text를 넣어줄수 있다. 
	
    d3.select('div').append('p').text('dynamic text append') //P 태그를 추가로 넣고 그곳에 text값을 넣는다.
	
    d3.select('div').insert('p') //p 태그를 insert를 한다 append와 같다.
	
    d3.select('div').remove()  // div태그를 삭제한다.
	
    d3.select('body').append('div').append('p').html('<span>This is new inner html </span>') 
    //이렇게 체인방식으로 태그를 넣을 수 있다.여기서는 div를 추가하고 p태그를 넣고 html형식의 ()안의 내용을 추가한다는 뜻이다.
	
    d3.select('div > p > span').attr('class', 'error') 
    //attr 는 해당 부분에 접근해서 속성등을 지정해준다. 여기서는 해당 div의 클래스를 error 클래스로 지정해주었다. 그래서 위에 
    // 지정해놓은 style부분이 적용 된다.
    
	d3.select('input').attr('checked',true) //attribue로 접근해 checked 속성을 true로 바꿔주었다.
	
    d3.select('input').property('checked',true)//attribue로 접근이 안되는 것은 property로 접근해야한다.

  </script>
 </body>
</html>

 

결과이다.

 

반응형