[D3.js] 막대형 차트에 애니메이션 효과 부여

in #kr-dev6 years ago

[D3.js] 막대형 차트에 애니메이션 효과 부여


지난 시간에 막대형 차트와 간단한 애니메이션 효과를 실험해 보았습니다. 지난 시간에 다룬 내용을 기반으로 두가지 내용을 합쳐서 간단한 실험을 해보도록 하겠습니다. 내용은 막대형 차트를 기본베이스로 하고 이 막대 이미지를 애니메이션 효과를 부여하는 실험입니다.

1. 막대형 차트 예제



<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>codingman</title>    
    <style>
    .chart div {
      font: 10px sans-serif;
      background-color: steelblue;
      text-align: right;
      padding: 3px;
      margin: 1px;
      color: white;
    }
    </style>
  </head>
  <body>
    <div class="chart"></div>
    <script src="https://d3js.org/d3.v5.min.js"></script>
    <script>
      var data = [10, 20, 30, 40, 50];

      d3.select(".chart").selectAll("div").data(data)
        .enter().append("div")
        .style("width", function(d) { return d*10 + "px"; })
        .text(function(d) { return d; });
    </script>    
  </body>
</html>

위 기본소스는 지난시간에 다룬 내용입니다. 위 내용을 모를 경우 [D3.js] 막대형 차트로 보는 D3.js post를 읽고 오시면 됩니다.

[결과]

2. 위 막대형 차트를 애니메이션 효과 부여


       .transition() 
         .duration(2000)  
                 이동좌표;

위 코딩만 사용 합니다. 막대이니간 막대를 2초동안 특정이동좌표로 이동하라는 명령코딩을 내릴 수 있습니다.

막대형 차트와 합쳐서 코딩을 하면 다음과 같습니다.

  <script>
       var data = [10, 20, 30, 40, 50];

      var div = d3.select(".chart").selectAll("div").data(data)
           .enter().append("div")
             .style("width", "0px")
             .transition()   
             .duration(2000)               
             .style("width", function(d) { return d*10 + "px"; })
           .text(function(d) { return d; });
</script>  

위 코딩은 style()함수로 초기 시작위치는 width값을 0px로 하였습니다. 그리도 애니메이션 효과로 데이터 값의 길이만큼 그려지게 표현 했네요.

[결과]

3. 역방향 애니메이션 효과


위에서 왼쪽에서 오른쪽으로 막대가 이동했다면 반대로 이동하는 것을 궁금해 해야 합니다. 그러면 반대의 경우는 어떻게 이동 할까요.

방금 했던 코딩에서 한줄만 제거 하시면 됩니다.

  <script>
       var data = [10, 20, 30, 40, 50];

      var div = d3.select(".chart").selectAll("div").data(data)
           .enter().append("div")
//           .style("width", "0px")
             .transition()   
             .duration(2000)               
               .style("width", function(d) { return d*10 + "px"; })
             .text(function(d) { return d; });
</script>  

시작 위치를 0px로 안하면 됩니다.

[결과]

마무리


오늘은 d3.js에서 막대형 차트와 애니메이션 효과를 합쳐서 표현해 보았습니다.단순히 막대형 차트로만 표현하면 밋밋한 모습이였지만 딱 두줄이 추가함으로 뭔가 있어 보이는 표현이 되었네요.

오늘 내용은 지난시간의 다룬 내용을 합친 실험입니다.

Sort:  

배우고 갑니다~

배우셨다니 다행이네요

코딩의 중요성 을 알면서 여유가 없네요..
그래도 꼭 보러 올께요.
모르더라도 다 읽어 보고,
다음에 공부 시작할때 정독 하겠습니다

DC299F68-9119-4A0E-90FB-44A3B20880E6.jpeg

감사합니다.

d3 차트도 배워서 사용해봐야겠어요~😊

Posted using Partiko Android

d3 공부중인데 은근히 재미있네요.

코딩 저도 배워야되는데
앞으로 자주 배우러 오겠습니다!

이 코딩 말고요 기본 자바스크립트만 배우시면 steem.js API 접근을 쉽게 할 수 있고 스티미언 활동 관리도 효율적으로 할 수 있어요. 스티미언으로 활동을 열심히 하고 싶으시면 약간의 코딩을 공부하시면 엄청 도움이 돼요.
한번 도전해 보세요.

d3 js는 오호..애니메이션 효과를 저렇게 간단하게 처리할수 있다니..ㄷㄷ 멋지네요 전 거의 커머스 위주로 했더니 이런걸 해본적이 없었는데 이런 좋은 정보! 나중에 개인적이라도 써보고 싶네요~

d3 사이트 가셔서 갤러리 보시면 데이터 시각화가 거의 환상적일꺼에요. 코딩 분량도 거의 한페이지 분량 뿐이 안되는데 고퀄리티 시각화를 해놓은 것들을 보면 장난 아니죠.

막대그라프가 움직이니 실감이 납니다.

단순 이미지화 보다 이렇게 움직임을 넣으면 좀 더 화려해지는데 d3에선 함수 형태로 잘 정리되어 있어서 사용하기 편한 것 같아요.

이오스 계정이 없다면 마나마인에서 만든 계정생성툴을 사용해보는건 어떨까요?
https://steemit.com/kr/@virus707/2uepul

방문해주셔서 감사합니다.

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63550.59
ETH 2644.53
USDT 1.00
SBD 2.81