1. 程式人生 > >D3_柱狀圖(2)

D3_柱狀圖(2)

var dataset=[]; for (var i=0;i<30;i++){ var num=Math.round(Math.random()*30); dataset.push(num); } // var dataset=[5,15,25,35,45,12,12,23,65,43,78,33,33,43,12,12,23,65,43,78,33,65,43,78,33,33,43,12]; var h=350; var w=800; var maxvalue=80; var svg=d3.select("body").append("svg"); svg.attr("height"
,h) .attr("width",w); /*根據資料個數對映到w,平均分配寬度,間距是0.5,*/ var xscale=d3.scale.ordinal() .domain(d3.range(dataset.length)) .rangeRoundBands([0,w],0.1);//ordinal是一個序數比例尺,會根據資料集數量來平均分段,且儲存了每段的寬度, /*將y值對映到0-100*/ var yscale=d3.scale.linear()//當資料型別不是點集的形式,max()下不用巢狀匿名函式
.domain([0,d3.max(dataset,function(d){ return d; })]) .range([5,h]); svg.selectAll("rect") .data(dataset) .enter() .append("rect") .attr("x",function(d,i){ return xscale(i); }) .attr("y"
,function(d){ return (h-yscale(d)); }) .attr("height",function(d){ return yscale(d); }) .attr("width",xscale.rangeBand()) .attr("fill",function(d){ return "rgb(0, 0, " + Math.round(d * 10) + ")"; }); /*svg.selectAll("rect") .data(dataset) .enter() .append("rect") .attr("x",function(d,i){ return w*i/dataset.length; }) .attr("width",function(d,i){ return w/dataset.length-2; }) .attr("height",function(d){ return d; }) .attr("y",function(d){ return h-d;//svg中矩形的座標是左上角到右下角,且只能從上向下長,既然只能從上向下,那麼久改變用h-d }) .attr("fill",function(d){ return "rgb(0,0,"+d*10+")"; }); */ svg.selectAll("text") .data(dataset) .enter() .append("text") .text(function(d){ return d; }) .attr("x",function(d,i){ return xscale(i); }) .attr("y",function(d){ return (h-yscale(d)+12); }) .attr("font-size","10px") .attr("fill","white"); d3.select("button") .on("click",function(){ var dataset=[]; for (var i=0;i<30;i++){ var num=Math.round(Math.random()*maxvalue); dataset.push(num); } var xscale=d3.scale.ordinal() .domain(d3.range(dataset.length)) .rangeRoundBands([0,w],0.1);//ordinal是一個序數比例尺,會根據資料集數量來平均分段,且儲存了每段的寬度, /*將y值對映到0-100*/ var yscale=d3.scale.linear()//當資料型別不是點集的形式,max()下不用巢狀匿名函式 .domain([0,d3.max(dataset,function(d){ return d; })]) .range([5,h]); svg.selectAll("rect") .data(dataset) .transition() .delay(function(d,i){//每個載入資料延遲 return i/dataset.length*2000; }) .duration(5000) .ease("linear") .attr("x",function(d,i){ return xscale(i); }) .attr("y",function(d){ return (h-yscale(d)); }) .attr("height",function(d){ return yscale(d); }) .attr("width",xscale.rangeBand()) .attr("fill",function(d){ return "rgb("+Math.round(d * 10)+",100, 0)"; }); svg.selectAll("text") .data(dataset) .transition() .delay(function(d,i){//每個載入資料延遲 return i/dataset.length*1000; }) .text(function(d){ return d; }) .attr("x",function(d,i){ return xscale(i); }) .attr("y",function(d){ return (h-yscale(d)+12); }) .attr("font-size","10px") .attr("fill","white"); })