티스토리 뷰

위에 소스와 별 다르진 않지만 animate 속성을 추가해줬다.
굵게 처리된 부분을 확인하면 된다. 문제는 크롬과 파이어폭스에서만 지원된다는것.
IE9 은 안된다.. 망할... PC용 사파리도 안됨.. 모바일은 되려나??
개발자 도구에서 보면 아래와같이 rect 태그에 animate 속성이 추가된 것을 볼 수 있다.





<!DOCTYPE HTML>
<html>
    
    <head>
        <meta charset="utf-8">
        <script type="text/javascript" src="d3.v2.js"></script>
        <style>
            .chart {
                margin-left:42px;
                font: 10px"Comic Sans MS", cursive;
                shape-rendering:crispEdges;
            }
            .chart div {
                background-colkr:steelblue;
                text-align:right;
                padding:3px;
                margin:1px;
                color:white;
            }
            .chart rect {
                stroke:white;
                fill:steelblue;
            }
            .chart text {
                fill:white;
            }
        </style>
        <title>무제 문서</title>
    </head>
    
    <body>
        <div id="body">
            <div id="content">
                <script>
                    var data = [5, 1, 3, 6, 7, 8];

                    var chart = d3.select("body").append("svg").attr("class", "chart").attr("width", 420).attr("height", 20 * data.length);


                    var x = d3.scale.linear() // 막대형 차트를
                    .domain([0, d3.max(data)]).range([0, 420]); // svg로 그리려는 영역이 최소 0에서 최대 420이다.
                    chart.selectAll("rect") // 윗부분에서 chart 
                    .data(data).enter().append("rect") // rect를 추가해준다.
                    .attr("y", function (d, i) {
                        return i * 20;
                    }).attr("width", x).attr("height", 20).append("animate").attr("attributeType", "Transform").attr("attributeName", "width").attr("from", "0").attr("to", x).attr("dur", "1s");


                    var y = d3.scale.ordinal() // 막대차트에 값을 넣는다.
                    .domain(data).rangeBands([0, 120]);
                    chart.selectAll("rect").data(data).enter().append("rect").attr("y", y).attr("width", x).attr("height", y.rangeBand());


                    chart.selectAll("text") // 값표시
                    .data(data).enter().append("text").attr("x", x).attr("y", function (d) {
                        return y(d) + y.rangeBand() / 2;
                    }).attr("dx", -3) // padding-right
                    .attr("dy", ".35em") // vertical-align: middle
                    .attr("text-anchor", "end") // text-align: right
                    .text(String);
                </script>
            </div>
        </div>
    </body>

</html>

'프로그래밍 > SVG' 카테고리의 다른 글

SVG로 만든 기본 bar chart (1) - d3.js 이용  (0) 2012.03.21
SVG Animate  (0) 2012.03.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함