[D3.js] JSON 파일 읽는법

D3.js/D3.js|2019. 11. 1. 09:00

[D3.js] JSON 파일 읽는법


지난시간에는 CSV, TSV 파일을 읽어 보았는데 오늘은 JSON 파일을 읽어 보도록 하죠. 실험은 ATOM 편집기에서 이루어 집니다. 웹브라우저 설정이 귀찮아서 그냥 ATOM 편집기로 실험하게 되었네요.

1. JSON 실험 데이터


실험 데이터는 간단하게 아래와 같은 데이터를 만들었습니다.

[data.json]

[
  {
    "x": "50",
    "y": "50"
  },
  {
    "x": "100",
    "y": "150"
  },
  {
    "x": "150",
    "y": "50"
  },
  {
    "x": "200",
    "y": "150"
  },
  {
    "x": "250",
    "y": "50"
  }
]

2. V4 버전에서 JSON 파일 열기


V4 버전에서 아래와 같은 함수로 간단히 읽어 올 수 있습니다.

d3.json("데이터파일", function(error,data){
   
});

이제 위에 만들어 놓은 JSON 데이터를 읽어 봅시다.

[소스]

<script src="https://d3js.org/d3.v4.min.js"></script>

<body>
  <script>

    d3.json("data.json", function(error,data){
        if (error) throw error;

        data.forEach(function(d){
            console.log(d.x+","+d.y);
        });
    });
  </script>
</body>

[결과]


3. V5 버전에서 JSON 파일 열기


d3.json("데이터파일").then(function(data) {
});

위와 같은 형태로 변경 되었으며 정상적으로 읽어오는지 살펴 보죠.

[소스]

<script src="https://d3js.org/d3.v5.min.js"></script>
 
<body>
  <script>
    d3.json("data.json").then(function(data) {
      //console.log(data);
            data.forEach(function(d){
                console.log(d.x+","+d.y);
            });
    });
  </script>
</body>

[결과]


정상적으로 JSON 데이터를 읽어 왔네요.

마무리


지금까지 CSV, TSV와 마찬가지로 JSON 함수도 동일한 방식으로 읽어 옵니다. 잘 봐두셨다가 나중에 여러분들이 사용하는 데이터 형식에 맞게 D3.js 함수를 이용하여 활용하시면 됩니다.

'D3.js > D3.js' 카테고리의 다른 글

[D3.js] CSV, TSV, JSON, XML 시각화  (0) 2019.11.13
[D3.js] XML 파일 읽는법  (0) 2019.11.11
[D3.js] TSV 파일 읽는법  (0) 2019.10.31
[D3.js] CSV 파일 읽는법  (0) 2019.10.30
[D3.js] 버전에 따른 사라진 함수 복원  (0) 2019.10.29

댓글()

[D3.js] TSV 파일 읽는법

D3.js/D3.js|2019. 10. 31. 09:00

[D3.js] TSV 파일 읽는법


지난시간에는 CSV 파일을 읽어 보았는데 오늘 TSV 파일을 읽어보는 실험을 하도록 하겠습니다. TSV 파일도 버전 4와 버전 5에서 읽는 법이 CSV 파일을 읽는 방식처럼 변경 되었습니다. 두 가지 방식으로 같이 간단히 어떻게 읽어오는지 살펴보도록 하죠.

1. ATOM 편집기에서 실험


TSV 파일을 읽는 실험은 ATOM 편집기에서 "preview HTML"에서 확인 하도록 하겠습니다.


TSV 실험 데이터


메모장에서 지난 시간의 CSV 파일은 콤마(",")로 이루어졌는데 오늘 배우는 TSV 파일은 데이터 간의 간격이 tab키로 맞춰졌습니다. ATOM에서는 tab키를 누르고 저장하면 간격이 스페이스바 키의 값의 간격으로 맞춰져서 정상적인 TSV 데이터 파일이 만들어지지 않으니깐 꼭 메모장에서 작업해서 위 이미지처럼 데이터 파일을 만드세요.

2. V4 버전 TSV 파일 열기


V4 버전에서는

d3.tsv("데이터파일", 타입, function(error,data){
   
});

이렇게 정의되어 있으며 아래에서 간단히 위에서 만든 TSV 데이터 파일을 열어 보죠.

[소스]

<script src="https://d3js.org/d3.v4.min.js"></script>
 
<body>
 <script>
   d3.tsv("data.tsv", type, function(error,data){
       if (error) throw error;
 
       data.forEach(function(d){
           console.log(d.x+","+d.y);
       });
   });
 
   function type(d){
     d.x=+d.x;  //parseFloat(d.x);
     d.y=+d.y;  //parseFloat(d.y);
     return d;
   }
 </script>
</body>

[결과]


결과를 보시면 정상적으로 데이터를 읽어왔네요. 데이터는 타입을 지정하고 consol.log()함수로 해당 데이터를 읽어오게 됩니다.

3. V5 버전 TSV 파일 열기


d3.tsv("데이터파일",타입).then(function(data) {
});

위와 같은 형태로 변경 되었으며 정상적으로 읽어오는지 살펴 보죠.

[소스]

<script src="https://d3js.org/d3.v5.min.js"></script>
 
<body>
 <script>
 
 d3.tsv("data.tsv",type).then(function(data) {
  //console.log(data);
        data.forEach(function(d){
            console.log(d.x+","+d.y);
        });
 });
 
 function type(d){
  d.x=+d.x;  //parseFloat(d.x);
  d.y=+d.y;  //parseFloat(d.y);
  return d;
 }
 </script>
</body>

[결과]


V4 버전와 같은 결과를 읽어 왔네요.

마무리


V4 버전에서 사용된 TSV()함수가 V4 버전에서 달라졌고 저도 처음에 왜! 못 읽지 했네요. 여러 종류의 데이터 파일들을 읽는 방식이 전부 변경 되었네요.

'D3.js > D3.js' 카테고리의 다른 글

[D3.js] XML 파일 읽는법  (0) 2019.11.11
[D3.js] JSON 파일 읽는법  (0) 2019.11.01
[D3.js] CSV 파일 읽는법  (0) 2019.10.30
[D3.js] 버전에 따른 사라진 함수 복원  (0) 2019.10.29
[D3.js] HTML의 CSS  (0) 2019.10.28

댓글()

[D3.js] CSV 파일 읽는법

D3.js/D3.js|2019. 10. 30. 09:00

[D3.js] CSV 파일 읽는법


Data 형식이 CSV파일로 되어 있을 때 CSV 파일을 D3.js에서 읽는 실험을 간단히 해보도록 하죠. 엑셀로 DB작업을 했을 때 그 파일을 CSV 파일형식으로 변환을 많이 합니다. CSV 파일 형태로 된 데이터를 많이 다루게 됩니다. D3.js에서 CSV 파일을 어떻게 읽어오는지 알아두시면 좋겠죠.

1. 크롬 웹브라우저에서 파일 열기


D3.js의 결과를 보기 위해서 웹브라우저 창에서 열게 됩니다. CSV 파일을 웹브라우저에서 읽고 결과를 출력하기 위해서는 사전 세팅이 필요합니다. 제가 처음에 연습했을 때는 그냥 ATOM 편집기를 이용하여 가상 웹서버 플로그를 통해 http형식으로 열어 CSV 파일을 쉽게 열었는데 ATOM 편집기가 안깔린 노트북에서 실험을 하다 보니 크롬 웹브라우저 "file:///C:/" 열면 Cross domain 문제로 ERROR가 발생합니다. "보안 어쩌구 저쩌구" 문제로 열리지 않습니다. 그래서 크롬 속성창의 속성 정보를 수정해야 합니다.

크롬 속성창에서 대상 부분에 "--allow-file-access-from-files "를 추가하면 되는데 제 노트북에서 안되더군요. 그래서 검색을 좀 하니 저와 같은 문제를 해결한 post가 있어 겨우 크롬 문제를 해결했네요.

삽입 문장 : "--disable-web-security --user-data-dir"

삽입 할 문장은 아래 그림에서 대상 부분에 이여서 삽입문장을 복사해서 붙이시면 됩니다.


2. CSV 파일 열기


[data.csv]


(1) 버전 4에서 열기


d3.csv("data.csv", function(error, data) {
  if (error) throw error;
  console.log(data);
});

[결과] 크롬


(2) 버전 5에서 열기



버전 5에서는 기존의 버전4 d3.csv()함수는 작동하지 않고 변경 되었네요. 위 출처에 가셔서 한번 어떤게 바뀌게 되었는지 읽어 보시기 바랍니다.

d3.csv("data.csv").then(function(data) {
  console.log(data);
});

[결과] 파이어폭스


위 코딩도 지원하는 최신 웹브라우저에서 사용이 가능 하고 구버전에서는 작동이 되지 않더군요. 좀 불편하다면 그냥 버전 4로 기존 방식을 사용하는게 좋을 듯 싶네요. 크롬 버전이 낮아서 그런지 크롬에서 정상작동하지 않아서 파이어폭스로 실행해 보았네요.

3. ATOM 편집기에서 열기


웹브라우저의 속성창을 수정 할 필요 없이 그냥 열 수 있습니다. 처음부터 ATOM에서 연습하시면 귀찮은 부분은 없어집니다.


다운받아서 설치하시면 그냥 단순한 편집기로 별 다른 기능은 없습니다. 패키지를 설치해야 하는데 여러분들이 공부하고 싶은 패키지를 검색하셔서 설치하시면 됩니다. 오늘 post의 실험을 하기 위해서는 preview HTML 패키지를 설치하시면 됩니다. 혹시 가상서버로 여시고 싶을 때는 Live Server 패키지를 설치하시면 됩니다. 참고로 여러가 패키지가 있는데 각자 선호하는 기능들이 다르기 때문에 구글 검색에서 ATOM 편집기에 사용하기 좋은 패키지를 한번 검색하셔서 원하는 패키지를 설치하시기 바랍니다.

(1) 버전 4 CSV 파일 열기



(2) 버전 5 CSV 파일 열기



마무리


버전 5에서는 CSV()함수가 좋아졌는데 좀 불편한 감이 없잖아 있네요. 계속 개선은 되는데 개선 될 때 마다 버전 별 코딩이 바뀌니깐 매번 체크해 줘야 한다는 점이 D3.js를 공부하는 장애가 되고 있네요. 현재까지 잘 사용하던 함수가 새로운 버전이 나와 바뀌게 될 경우 코딩에 에러가 발생한다는 점이 지금 써먹지 못한다면 구지 최신 버전에 맞게 공부 할 필요성이 있는지라는 코딩 의욕을 꺾는 요소가 되는 것 같아요.

'D3.js > D3.js' 카테고리의 다른 글

[D3.js] JSON 파일 읽는법  (0) 2019.11.01
[D3.js] TSV 파일 읽는법  (0) 2019.10.31
[D3.js] 버전에 따른 사라진 함수 복원  (0) 2019.10.29
[D3.js] HTML의 CSS  (0) 2019.10.28
[D3.js] HTML의 SVG 태그 D3로 코딩  (0) 2019.10.25

댓글()

[D3.js] 버전에 따른 사라진 함수 복원

D3.js/D3.js|2019. 10. 29. 09:00

[D3.js] 버전에 따른 사라진 함수 복원


예전에 처음 D3.js를 공부할 때 제일 애먹은 부분이 버전 별 함수가 변경 되거나 또는 사리지는 함수들 때문에 유튜브 동영상 강좌를 보면서 현재 버전을 공부할 때 에러와의 싸움에서 무지 답답하고 귀찮았습니다. 오늘 다루는 사라진 함수를 사용하고 싶을 때 복원하는 방법을 다루고자 합니다.

1. d3.svg.diagonal() 함수


V3 버전에서 사용되는 함수인데 V4버전에서는 사라진 함수입니다. 이 함수를 사용하면 V4버전 부터는 에러가 뜹니다. 물론 V5버전에서 에러가 뜨겠죠. 이 곡선과 유사한 곡선을 물론 V4버전에서 제공되는데 이 곡선함수를 사용하고 싶을 때에는 V3버전을 링크 걸어서 사용해야 합니다.

하지만, 꼭 링크를 걸어서 사용할 필요는 없습니다. d3.js를 공부하시는 분들이라면 이 함수를 복원하고 싶은 충동을 느끼신다면 한번 직접 만들어 봐야 겠죠.

우선 V3 버전으로 곡선을 그려 보고 분석 해보도록 하죠.

V3버전 d3.svg.diagonal() 함수 사용 :

<svg height="300" width="300" style="background: yellow">
</svg>

<script src="https://d3js.org/d3.v3.min.js"></script>

<script>
var diagonal = d3.svg.diagonal()
      .source({x:10,y:10})
      .target({x:290,y:290});
var path = d3.select("svg").append("path")
      .attr("fill","none")
      .attr("stroke","#0000ff")
      .attr("stroke-width","1.5px")
      .attr("d",diagonal);
</script>

[결과]


위 결과는 V3버전에서 사용할 경우에 한해서 결과가 출력합니다. V4버전 이후 부터는 사용 할 수 없습니다.

2. d3.svg.diagonal() 함수 곡선 분석


이 함수를 복원하기 위해서는 HTML 문서 상에서 어떤 코딩으로 곡선이 그려지는지 분석해야 합니다.

한번 위 예제소스를 실행시켜서 나온 결과에 오른쪽 마우스 버턴을 클릭하여 소스창보기를 할까요.

<path d="M10,10C10,150 290,150 290,290" stroke-width="1.5px" stroke="#0000ff" fill="none"></path>

위의 HTML 코딩 소스를 보시는 것과 같이 path태그속에서 M10,10에서 시작하여 숫자들이 나열되고 290,290지점으로 끝나게 됩니다. 뭔지는 모르지만 path 태그에서 d속성값을 위 숫자대로 대입하면 결과 이미지 처럼 나오게 됩니다.

정리를 하면,

diagonal = d3.svg.diagonal()
      .source({x:10,y:10})
      .target({x:290,y:290});

위 기준으로 시작하고 path 부분만 만들어 주면 됩니다. 그러면 패치 경로는 아래 HTML문서상의 코딩처럼 나오게 코딩해야 겠죠.

 <path d="M10,10C10,150 290,150 290,290" stroke-width="1.5px" stroke="#0000ff" fill="none"></path></svg>

위 path 경로의 d값만 코딩으로 표현하면 되는데 이 부분을 함수로 만들어 보겠습니다.

3. d3.svg.diagonal() 함수 만들기


 <path d="M10,10C10,150 290,150 290,290" stroke-width="1.5px" stroke="#0000ff" fill="none"></path></svg>

위 코딩 부분을 잘 풀어서 정리하면 아래와 같이 코딩 할 수 있습니다.

d =  "M"+source.x+","+ source.y+"C"+source.x+","+(target.y-140)+
    " "+target.x+","+(target.y-140)+ " " +target.x+","+target.y ;

이 부분을 함수로 만들어 정리하면,

function diagonaltest(){
  return "M"+source.x+","+ source.y+"C"+source.x+","+(target.y-140)+
    " "+target.x+","+(target.y-140)+ " " +target.x+","+target.y ;
}

이 코딩은 제 블로그에 예전에 공부할 때 정리한 코딩입니다.

4. d3.svg.diagonal()함수를 diagonaltest()함수로 변경


<svg height="300" width="300" style="background: yellow">
</svg>

<script src="https://d3js.org/d3.v5.min.js"></script>

<script>
var source = {x:10,y:10};
var target = {x:290,y:290};
var path = d3.select("svg").append("path")
    .attr("fill","none")
    .attr("stroke","#0000ff")
    .attr("stroke-width","1.5px")
    .attr("d",diagonaltest);

function diagonaltest(){
  return "M"+source.x+","+ source.y+"C"+source.x+","+(target.y-140)+
    " "+target.x+","+(target.y-140)+ " " +target.x+","+target.y ;
}
</script>

[결과]


마무리


대충 사라진 함수를 복원한 실험을 하였습니다.사실 예전에 D3.js를 처음 공부 할 때잠깐 실험했네 내용인데 스팀잇 공간에 소개하고 싶어서 post을 올립니다. 사실 사라진 함수는 새로운 함수가 나왔기 때문에 사라졌고 그 새로운 함수를 쓰면 좋지만 d3.js를 공부한다면 이 부분을 직접 복원해 보는 공부도 해보는 것이 좋을 것 같아서 이번 post의 주제로 정했네요.

사실 주말에 다른 일 때문에 post 연재가 막힐 것 같아서 예전에 실험한 내용을 기반으로 다시 정리를 했네요.

오늘 실험한 내용은 우선 과거 버전으로 코딩해서 나온 HTML의 결과 소스를 보고 분석하여 복원 함수를 만들었는데 여러분들도 과거버전 중 사라진 함수가 있다면 그 함수를 이런식으로 HTML 소스를 분석하여 직접 만들어 보셨으면 합니다.

'D3.js > D3.js' 카테고리의 다른 글

[D3.js] TSV 파일 읽는법  (0) 2019.10.31
[D3.js] CSV 파일 읽는법  (0) 2019.10.30
[D3.js] HTML의 CSS  (0) 2019.10.28
[D3.js] HTML의 SVG 태그 D3로 코딩  (0) 2019.10.25
[D3.js] HTML의 SVG 태그  (0) 2019.10.24

댓글()

[D3.js] HTML의 CSS

D3.js/D3.js|2019. 10. 28. 09:00

[D3.js] HTML의 CSS


CSS를 알아두면 D3.js를 사용할 때 편합니다. CSS은 HTML의 각 태그들의 스타일을 지정해 줍니다. 태그의 스타일을 D3.js 함수로 지정하여 멋지게 태그의 스타일을 만들기 때문에 미리 CSS의 개념을 잡아 놓으시면 나중에 D3.js에서 사용하실 때 효율적으로 코딩을 할 수 있습니다.

1. CSS(Cascading Style Sheets)


[기본 배치] : 3가지 형태로 CSS를 표현 합니다.

  • HTML 문서에 삽입하는 경우 :
<style>
svg {
  background-color: yellow;  
}
</style>
  • HTML 태그 속에 삽입하는 경우(svg) :
<svg width="300" height="300" style="background: yellow"></svg> 
  • 외부 CSS파일로 빼놓을 경우 :
<link rel="stylesheet" href="style.css" />

style.css 파일

svg {
  background-color: yellow;  
}


3. CSS 기본 코딩


스타일 지정 방식에서 특정 태그의 스타일을 지정하는 방식으로는 태그명, 클래스명, ID명으로 해당 태그의 스타일을 지정 할 수 있다.

<style>
     svg{
       background-color: yellow;
     }
     .a{
       fill:red;
       stroke:blue;
       stroke-width:5;
     }
     #b{
       fill:blue;
       stroke:red;
       stroke-width:5;
     }
</style>
<svg width="300" height="300">
   <rect class="a" x="10" y="10" width="50" height="30" />
   <rect id="b" x="100" y="100" width="50" height="30" />
</svg>      

위 예제는 3가지 접근 방법인데 svg 태그명으로 접근하면 html 문서상에 모든 svg 태그의 스타일을 지정하게 되고, 클래스명으로 접근하면 해당 클래명을 가진 태그만 스타일을 지정하게 된다. id명도 마찬가지입니다.

[결과]


2. D3.js로 스타일 지정


<script src="https://d3js.org/d3.v5.min.js"></script>
<script>
var svg = d3.select("body").append("svg")
     .attr("width", "300")
     .attr("height", "300")
     .style("background-color","yellow");
</script>

지난 시간의 예제 소스 입니다. 보시면 style()함수가 있고 각 개별적으로 스타일 속성을 지정해 주시면 svg 태그의 스타일이 변경됩니다.

묶어서 한번에 스타일을 지정 하고 싶을 때에는 rect 태그를 기준으로 코딩하면 다음과 같습니다.

  .styles({fill: 'red', stroke: 'blue', 'stroke-width': 5, opacity: 0.5 })

즉, 한개씩 수정할 때는 style()함수를 사용하고 여러개를 한번에 수정할 때에는 styles()함수를 사용한다.

참고로, attrs()나 styles()함수를 사용하기 위해서는 다음과 같은 링크 태그를 삽입해 놓아야 합니다.

<script src="https://d3js.org/d3-selection-multi.v1.min.js"></script>

마무리


CSS은 간단한 기본 지정만 하고 끝냈는데 사실 다양한 기능들이 있습니다. CSS를 얼마나 많은 사전지식을 가지고 있느냐에 따라 데이터 시각화의 스케일이 달라지게 됩니다. 애니메이션 효과도 부여 할 수 있고 스타일을 좀 더 정교하게 지정을 할 수 있는데 이건 CSS 래퍼런스를 좀 깊게 공부해 보세요. 나중에 D3.js로 데이터 시각화 할 때 CSS의 사전 지식을 어느정도 가지고 있으면 고퀄리티 작품을 만들 수 있을 거라 생각됩니다.

오늘 post에서는 간단히 CSS라는 것이 대충 어떤 느낌인지만 알아보는 시간이기 때문에 CSS 기교는 모두 뺐습니다. 이부분은 여러분들이 한번 CSS에 대한 문법을 공부한 뒤에 D3.js에서 CSS를 다뤄 보세요.

댓글()

[D3.js] HTML의 SVG 태그 D3로 코딩

D3.js/D3.js|2019. 10. 25. 09:00

[D3.js] HTML의 SVG 태그 D3로 코딩


지난 시간에는 HTML SVG 그리기 태그들을 이용하여 기본 태그와 속성들을 살펴 보았습니다. 이제는 D3.js 함수들을 사용하여 지난 시간의 배운 태그들을 표현을 해보는 시간을 갖도록 하겠습니다.

1. SVG 태그


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

D3.js로 표현하면 다음과 같습니다.

<script src="https://d3js.org/d3.v5.min.js"></script>
<script>
var svg = d3.select("body").append("svg")
     .attr("width", "300")
     .attr("height", "300")
     .style("background-color","blue");
</script>

attr()함수로 태그의 속성값을 지정하고 style()함수로 태그의 스타일을 지정해 줍니다.

여기서 몇개 안되는 속성 지정은 그냥 attr()함수나 style()함수로 일일히 지정해 주면 되지만 속성과 스타일의 지정 갯수가 많을 경우는 반복 코딩으로 꽤 귀찮은 코딩이 되겠죠.

이부분에 대해서 살펴보니깐 다음과 같이 수정하면 되더군요.

<script src="https://d3js.org/d3-selection-multi.v1.min.js"></script>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script>
var svg = d3.select("body").append("svg")
     .attrs({ width: 300, height: 300 })
     .style("background-color","yellow");
</script>

attrs()함수로 해서 여러개의 속성을 한번에 지정 할 수 있습니다.

2. 사각형 태그


기본 이미지 모양 태그 rect, circle, line, path, ellipse, polyline 등을 사용하여 그림을 그리게 되는데 그중 rect(사각형)을 D3.js로 어떻게 코딩되는지 살펴보도록 하죠.

위 SVG 코딩의 연장 선상에서 보시기 바랍니다.

var rect = svg.append("rect")  
   .attr("x","10")
   .attr("y","10")
   .attr("width","100")<center>![](https://i.imgur.com/gQiSnv4.jpg)</center>
   .attr("height","100")
   .attr("fill", "blue") //내부색
   .attr("stroke","red") //테두리색
   .attr("stroke-width","5") //테두리 두께
   .attr("opacity","0.5");  //불투명도



=> 내부색이 blue이고 테두리가 red인데 이미지가 이상하게 보일꺼에요. 불투명도 때문에 그렇습니다.

그런데 위와 같이 코딩을 하면 꽤 길고 귀찮게 attr()함수를 반복 코딩을 하는 번거로움이 발생합니다.

이부분을 간단히 코딩해 볼까요.

 var rect = svg.append("rect")
   .attrs({ x: 10, y: 10, width: 100, height: 100, fill: 'red', stroke: 'blue', 'stroke-width':5, opacity: '0.5' }) 

HTML에서 코딩하는 것처럼 속성 값들을 위와같이 나열하면 됩니다

다른방법으로,

 var rect = svg.append("rect")
   .attrs({ x: 10, y: 10, width: 100, height: 100})
   .styles({fill: 'red', stroke: 'blue', 'stroke-width': 5, opacity: 0.5 })

attrs()함수로 전체 속성을 지정해 주고 스타일 경우도 styles()함수로 전체 스타일을 지정해 주면 됩니다.

주의 : stroke-width의 경우는 따옴표로 묶어주셔야 합니다. '-'기호는 인식에서 에러가 발생하더군요. 그냥 HTML에서 쓰던 방식으로 코딩하면 안되고 일부 안되는 부분은 시행착오를 거쳐서 알아내야 하더군요.

그리고, attr() 함수의 인자인지 아니면 style()함수의 인자인지 참 애모한 경우가 있습니다. 일부 인자의 경우는 둘 모두에서 사용 될 수 있고 경우에 따라 한쪽에서만 사용되는 경우가 있는데 이건 연습이 필요해 보이네요.

3. 그외 태그들



<circle cx="100" cy="100" r="50" fill="red" stroke="blue" stroke-width="5"></circle>

타원


 <ellipse cx="100" cy="100" rx="50" ry="70" fill="red" stroke="blue" stroke-width="5"></ellipse>

라인


 <line x1="10" y1="10" x2="290" y2="290" stroke = "blue" stroke-width="5"> </line>

특수라인(path)


 <path d="M10,210 L110,120 110,210 110,220 210,250" fill="none" stroke="blue" stroke-width="5"></path>

폴리건


<polyline points="50,50 250,50 150,150 50,50" fill= "red" stroke="blue" stroke-width="5"></polyline>

위의 각 태그들은 사각형에서 표현했던 방식으로 여러분들이 수정해 보세요.

마무리


d3.js로 접근하는 함수에 대해 간단히 사각형으로 예를 들었고 그외 태그들은 복습 차원으로 다시 나열했습니다. 시험문제라고 생각하고 위 태그들을 사각형에서 코딩했던 방식으로 나머지 태그들을 어떻게 코딩을 해야 할지 한번 풀어 보세요.

댓글()

[D3.js] HTML의 SVG 태그

D3.js/D3.js|2019. 10. 24. 09:00

[D3.js] HTML의 SVG 태그


D3.js를 사용하기 위해서는 HTML에서 사용되는 태그들을 기본적으로 알아야 합니다. 그중에서도 SVG 태그는 꼭 숙지해 두셔야 나중에 차트와 같은 데이터 이미지화 할 때 효율적으로 사용할 수 있습니다. 오늘은 간단히 SVG에 자주 사용되는 태그들을 중점적으로 살펴보겠습니다.

1. 태그 SVG를 알자


웹상에서 그림을 그릴 때 HTML 태그 중 SVG로 그림을 그리는 영역을 잡고 기본 이미지 모양 태그 rect, circle, line, path, ellipse, polyline 등을 사용하여 그림을 그리게 됩니다.

SVG 태그 : 가로x세로(300x300)의 크기의 그림을 그리는 영역을 잡으면 아래와 같습니다.

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

그리고 그림 그리는 영역의 배경색을 넣을 때는 스타일로 지정을 하게 됩니다.

style="background: yellow"

svg 태그 안에서는 위와 같이 표현하면 됩니다.

<svg width="300" height="300" style="background: yellow"></svg> 


위 표현을 style을 앞에 표현한다면 이전 시간에 막대형 차트에서 보셨던 것 처럼 style 태그 안에다 해당 svg에 대한 스타일을 지정하면 됩니다.

<style>
  svg {
    background-color: yellow;
  }
</style>

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

2. 이미지 모양 태그


1) 사각형


<rect x="10", y="10" width="100" height="100" fill="red" stroke="blue" stroke-widht="5" opacity="0.5"></rect>
  • x,y : 시작꼭지점 위치
  • width : 사각 너비 크기
  • height : 사각 높이 크기
  • fill : 내부색
  • stroke : 테두리 색
  • stroke-widht : 테두리 크기
  • opacity : 투명도

예) 300x300 캔버스에 100x100 크기의 사각형을 그리기

  <svg width="300" height="300" style="background: yellow">
    <rect x="10", y="10" width="100" height="100" fill="red" stroke="blue" stroke-widht="5" opacity="0.5"></rect>    
  </svg> 

[결과]


2) 원


<circle cx="100" cy="100" r="50" fill="red" stroke="blue" stroke-width="5"></circle>
  • cx,cy : 원 시작꼭지점(cx,cy)
  • r : 반지름
  • 기타 : 위 사각형과 동일함

예) 300x300 캔버스에 반지름이 50인 원을 그리기

  <svg width="300" height="300" style="background: yellow">
    <circle cx="100" cy="100" r="50" fill="red" stroke="blue" stroke-width="5"></circle>
  </svg> 

[결과]


3) 타원


 <ellipse cx="100" cy="100" rx="50" ry="70" fill="red" stroke="blue" stroke-width="5"></ellipse>
  • cx,cy : 시작꼭지점(cx,cy)
  • rx : x축으로 넓이 반지름
  • ry : y축으로 높이 반지름
  • 기타 : 위 사각형과 동일함

예) 300x300 캔버스에 반지름이 x축 반지름 50이고 y축 반지름이 70인 타원을 그리기

  <svg width="300" height="300" style="background: yellow">
    <ellipse cx="100" cy="100" rx="50" ry="70" fill="red" stroke="blue" stroke-width="5"></ellipse>
  </svg> 

[결과]


4) 라인


 <line x1="10" y1="10" x2="290" y2="290" stroke = "blue" stroke-width="5"> </line>
  • x1,y1 : 시작점(x1,y1)
  • x2,y2 : 끝점(x2,y2)

예) 300x300 캔버스에 시작꼭지점(10,10)에서 끝점(290,290)가지의 직선그리기

  <svg width="300" height="300" style="background: yellow">
    <line x1="10" y1="10" x2="290" y2="290" stroke = "blue" stroke-width="5"> </line>
  </svg> 

[결과]


5) 특수라인(path)


 <path d="M10,210 L110,120 110,210 110,220 210,250" fill="none" stroke="blue" stroke-width="5"></path>

M : 시작 위치로 이동 (M 10,210 => (10,210)꼭지점이 시작위치가 됨
L : 이동할 라인 좌표 (L 110,120 => (110,120)꼭지점으로 라인을 그음 )
C : 곡선 S : 부드러운곡선 Q : 차 베지에곡선 T : 부드러운 차 베지에 곡선 A : 호 Z = 끝경로(시작점과 이

예) 300x300 캔버스에 특수라인 그리기

  <svg width="300" height="300" style="background: yellow">
    <path d="M10,210 L110,120 110,210 110,220 210,250" fill="none" stroke="blue" stroke-width="5"></path>
  </svg> 

[결과]


6) 폴리건


<polyline points="50,50 250,50 150,150 50,50" fill= "red" stroke="blue" stroke-width="5"></polyline>
  • pints : 폴리건의 꼭지점들

예) 300x300 캔버스에 폴리건 그리기

  <svg width="300" height="300" style="background: yellow">
    <polyline points="50,50 250,50 150,150 50,50" fill= "red" stroke="blue" stroke-width="5"></polyline>
  </svg> 

[결과]


마무리


오늘은 d3.js에서 데이터 시각화를 할 때 자주 사용되는 태그와 속성들을 간단히 살펴보았습니다. HTML 태그로 되어 있는데 이 부분을 D3.js함수로 그리게 할 수 있는데 오늘 내용이 너무 길어서 서론만 이야기하고 본론인 D3.js 함수에 대해서 이야기를 못했네요. 그냥 오늘은 HTML에서 사용되는 그리기 태그들만 간단히 알아만 두세요.

댓글()