이 블로그는인터넷 환경에서 Javascript, D3(Data-Driven Documents), SVG를 이용한 시각화(Visualization) 기술을 공유 하기 위한 블로그 입니다.

js-d3-basic

D3.js - Basic
D3.js의 이해와 사용을 위한 준비


  • D3.js 개요
    • 이 페이지에서는 D3.js를 소개하기 위하여 몇 종류의 D3 메서드를 자세한 설명 없이(D3 메서드의 자세한 설명은 다른 페이지에 작성함) 사용한다.

    • D3.js 란?
      • D3.js는 JavaScript 라이브러리로 데이터 기반 프레임 워크(Data-driven framework)이다. D3.js를 이용하면 더 적은 코드 라인으로 데이터 시각화 차트, 그래프, 지리 공간지도, 애니메이션(Animation) 등을 용이하게 실현할 수 있다.
      • 데이터 탐색 및 분석을 위해 웹 페이지의 DOM 요소를 선택(Selection)하고 처리(Manipulating)하여 시각화 하기 위한 오픈 소스 JavaScript 라이브러리 이다.
      • 배열, XML, CSV 및 JSON과 같은 데이터 형식으로 저장된 데이터를 D3를 사용하여 그래프, 차트, 애니메이션 등으로 변환 할 수 있다.
      • 원격 장치의 측정 데이터와 동작 상태, 모바일 및 기타 장치의 통화 내역 기록, Twitter, Facebook, WhatsApp과 같은 소셜 미디어 플랫폼의 메시지, 토론 또는 트위트 로그와 같은 빅 데이터, 시장 동향의 로그 및 거래 정보 등을 다양하게 시각화 할 수 있다.
    • D3.js의 특징
      • 데이터 기반(Data-Driven): D3는 주로 데이터를 분석 및 탐색하여 대화 형 실시간 그래프, 차트 등으로 데이터를 시각화 하는데 사용된다.
      • DOM 객체 활용(DOM Manipulation): DOM 객체(or elements)를 활용하여 다양한 시각화 형식으로 데이터를 변환하는 오픈 소스 라이브러리 이다.
      • 웹 표준 활용: 웹 표준인 HTML, CSS(Cascading Style Sheet), DOM(Document Object Model), SVG(Scalable Vector Graphics)를 사용하여 데이터를 시각화 한다. 또한 웹 표준을 사용하여 처리하기 때문에 브라우저 이외의 다른 플러그인를 필요로 하지 않는다. Chrome과 같이 "개발자 도구"를 포함하고 있는 브라우저를 사용하는 경우 별도의 디버깅 도구를 필요로 하지 않는다.
      • 빠른 DOM 객체의 선택과 응답: 선택한 DOM 객체를 한 상태에서 다른 상태로 빠르게 변환하거나 애니메이션하거나 할 수 있다.
      • 동적 전환 표시(Display Dynamic Transitions): 이 라이브러리는 DOM을 사용하여 빠른 동적 전환(Dynamic transition)과 시각화가 가능하도록 설계되었다.
      • Angular.JS, Ember.JS 또는 React와 같은 다른 JavaScript 프레임 워크와 함께 사용할 수 있다.
    • 필요한 배경 지식
      • JavaScript: D3.js는 JS(JavaScript) Library 이기 때문에 기본 프로그램 언어인 JS에 대한 이해는 필수 요건이다.
      • 참고자료: JavaScript Tutorial

      • HTML: HTML(Hyper Text Markup Language)은 웹 페이지를 구축하는 표준 언어로 웹 페이지의 콘텐츠를 작성하는데 사용된다.
      • 참고자료: HTML Tutorial

      • CSS: CSS(Cascading Style Sheet)는 웹 페이지의 스타일(디자인, 레이아웃 및 화면 크기 등)을 지정하는데 사용된다.
      • 참고자료: CSS Tutorial

      • SVG: SVG(Scalable Vector Graphics)는 벡터 기반 그래픽을 XML 형식으로 정의한다.
      • 참고자료: SVG Tutorial

      • DOM: DOM(Document Object Model)을 이용하여 HTML Document의 Object에 접근(필요한 Object를 선택하여 처리할 수 있게함)하여 데이터 시각화 등을 하기 때문에 이해가 필요하다.
        • 브라우저에서 HTML 페이지를 로드하면 HTML의 모든 태그는 부모-자식 계층 구조를 가진 DOM의 element/object로 변환된다.
        • DOM은 HTML 페이지를 논리적으로 구조화하여 HTML 페이지 Element의 처리(추가/수정/제거)를 용이하게 한다.
        • 아래 예는 HTML 문서(Document)를 DOM으로 변환한 예 이다.
        • HTML Document와 DOM(Document object model)의 관계를 보여주기 위한 HTML Document




          위 HTML Document의 DOM(Document object model)

          참고자료: JavaScript HTML DOM


    • D3.js 사용을 위한 준비
      • D3.js를 본인의 컴퓨터에 설치하여 사용 방법과 Link 하여 사용하는 방법이 있다.

      • D3.js 설치하기
        • D3js.org 에서 D3.zip을 Download 한다.
        • D3.zip의 압축을 해제하면 d3.js와 d3.min.js가 포함 되어 있다. d3.min.js는 d3.js를 축소한 버전으로 기능은 축소되어 있지만 크기가 작기 때문에 보통 이 버전을 사용한다.
        • d3.min.js 사용하기: HTML 페이지에 아래와 같은 내용을 삽입한다. 아래 예는 HTML 페이지와 d3 폴더가 같은 폴더에 있는 경우이다.
        • <script src="./d3/d3.min.js"></script>

      • d3.min.js를 Link 하여 사용하기
        • HTML 페이지에 아래와 같은 내용을 삽입한다. 아래 예는 d3 버전 v6를 사용하는 예이다.
        • <script src="https://d3js.org/d3.v6.min.js"></script>

          HTML 페이지 예


  • HTML 페이지에 D3 Object를 생성하고 웹 브라우저에 출력하기
    • HTML 페이지 만들기
      • D3 Element를 웹 브라우저에 출력하기 위하여는 웹 브라우저에 출력되는 HTML 페이지가 필요하다.

      • HTML 페이지 예
        • 위 HTML 문서를 복사하여 index.html 파일을 만들고 실행(더블 클릭)하면 웹 브라우저에 "D3 Drawing testing"가 출력된다.

    • Selecting 과 Appending
      • D3 Element를 웹 브라우저에 출력하기 위하여는 웹 브라우저의 특정 위치를 선택(Selecting)하여 이곳에 D3 Element를 첨부(Appending)하여야 한다.

      • selecting Method: HTML 문서 내의 DOM Object(웹 페이지가 Load되면 브라우저는 HTML 문서의 Document Object Model(DOM)을 생성한다.)를 선택하는 Method 이다.
      • Appending Method: 선택된 DOM Object에 Element(or Object)를 첩부(Appending)하는 Method 이다.
      • HTML 문서에 p(Paragraph) "hello world" Text를 Appending 하는 예
      • 위 HTML 문서를 복사하여 d3-blue-sky.html 파일을 만들고 실행(더블 클릭)하면 웹 브라우저에 "D3 Drawing testing"아래에 "blue" 색의 "Blue sky"가 출력된다.

    • Text와 Mouse Event Appending 하기
      • 이 예는 HTML 문서에 SVG elements Text와 Mouse event를 Appending 하는 예이다.

        주의: SVG elements와 HTML elements를 처리(추가/수정/제거)하는 메서드(method)의 기술 방법이 조금 다르기 때문에 주의가 필요하다.

        참고자료: SVG Tutorial

      • svg에 Text와 Mouse event를 Binding 하는 예
      • 위 HTML 문서를 복사하여 d3-sky-on-click.html 파일을 만들고 실행(더블 클릭)하면 웹 브라우저에 "D3 Click on Blue sky" 아래에 "Blue sky"가 "blue" 색으로 출력된다. "Blue sky" 위에 Mouse가 위치하면 Text 색이 "green"로 바뀌고 Mouse가 Text 위를 벗어나면 Text 색이 "blue"로 바뀐다. Mouse를 Text 위에서 click 하면 Alert 창이 열리고 "The sky is blue." 메세지가 출력된다.

    • 원과 사각형의 속성 설정과 그리기
      • 자주 사용하는 SVG elements인 원(circle)과 시각형(rect)의 추가와 속성 변경에 대한 이해를 위한 예이다.

        아래 HTML 페이지가 브라우저에 출력된 예

      • 원과 시각형을 그리고 속성을 변경하는 예
      • 위 HTML 문서를 복사하여 d3-circle-rect.html 파일을 만들고 실행(더블 클릭)하면 웹 브라우저에 원과 사각형이 출력된다.도형 위에 Mouse가 위치하면 도형이 적색으로 바뀌고 Mouse가 도형을 위를 벗어나면 원래 색으로 돌아온다. 도형 위에서 click 하면 도형이 사라진다. 도형 아래 "Circle display" 버튼을 클릭하면 원이 다시 보이고, "Rect display" 버튼을 클릭하면 사각형이 다시 보인다.


  • D3.js의 이해와 사용을 위한 준비 관련 페이지 보기