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 | <!DOCTYPE html> <html> <head> <meta charset= "utf-8" > <title>D3.js サンプル</title> <link rel= "stylesheet" href= "css/main.css" > <style> svg { border:1px solid black; } .axis text { font-family: sans-serif; font-size: 11px; } .axis path, .axis line { fill: none; stroke: black; } </style> </head> <body> <h1>D3.jsサンプル</h1> <div id= "myGraph" ></div> <script src= "js/sample.js" ></script> </body> </html> |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | var list = [10, 30, 5, 60, 40, 78, 56, 30, 24, 80]; var svgWidth = 320; // SVG領域の横幅 var svgHeight = 240; // SVG領域の縦幅 var barHeight = 200; // 棒グラフの基準位置 var barScale = 2; // 2倍サイズで描画 var xBarSize = 18; // 棒グラフの横幅 var xOffset = 30; var yOffset = 20; var svg = d3.select( "#myGraph" ).append( "svg" ) .attr( "width" , svgWidth).attr( "height" , svgHeight) var bar = svg.selectAll( "rect" ) // SVGでの四角形を示す要素を指定 .data(list) // データを設定 .enter() .append( "rect" ) // SVGでの四角形を示す要素を生成 .attr( "x" , function (d,i){ // X座標を配列の順序に応じて計算 return i * xBarSize+xOffset; }) .attr( "y" , function (d){ // 縦幅を配列の内容に応じて計算 return barHeight + yOffset + "px" ; }) .attr( "height" , function (d){ // 縦幅を配列の内容に応じて計算 return "0px" ; }) .attr( "width" , 16) // 棒グラフの横幅を指定 .attr( "style" , "fill:rgb(255,0,0)" ) // 棒グラフの色を赤色に設定 // 目盛りを表示するためにスケールを設定 var yScale = d3.scale.linear() // スケールを設定 .domain([0, 100]) // 元のサイズ .range([0, 100*barScale]); // 実際の出力サイズ // 目盛りを設定し表示する svg.append( "g" ) .attr( "class" , "axis" ) .attr( "transform" , "translate(" +xOffset+ ", " +yOffset+ ")" ) .call(d3.svg.axis() .scale(yScale) //スケールを適用する .orient( "left" ) //目盛りの表示位置を左側に指定 ); // アニメーション処理 d3.select( "svg" ).on( "mouseover" , function (){ bar .transition() // 以後に記述した内容がアニメーションの最終設定値になる .delay(2000) .attr( "height" , function (d){ // 横幅を配列の内容に応じて計算 return (d*barScale) + "px" ; }) .attr( "y" , function (d){ // 縦幅を配列の内容に応じて計算 return barHeight-(d*barScale) + yOffset + "px" ; }) }) |