var data = [1, 4, 2, 5, 22, 9, 11],數組
bar_height = 50, bar_padding = 10, svg_height = (bar_height + bar_padding) * data.length, svg_width = 500
var data = [1, 4, 2, 5, 22, 9, 11],app
// bar_height=50, //相對於y軸就要改成 bar_width,而後經過全局查找將所有的bar_width改成bar_width bar_width = 50,//相對於y軸就要改成width bar_padding = 10, svg_width = (bar_width + bar_padding) * data.length, //將變量svg_height 改成 svg_width svg_height = 500
// 定義縮放函數dom
var scale = d3.scale.linear() .domain([0, d3.max(data)]) .range([0, svg_width]);
var scale = d3.scale.linear() .domain([0, d3.max(data)]) .range([svg_height, 0]);
var svg = d3.select("#container")svg
.append("svg") .attr("width", svg_width) .attr("height", svg_height) var bar = svg.selectAll("g") //旋轉svg中全部的g元素 .data(data) //使用data()方法將data[]數組和g綁定起來 .enter() .append("g") .attr("transform", function(d, i) { //水平:return "translate(0," + i * (bar_height + bar_padding) + ")"; //豎直:return "translate(" + i * (bar_height + bar_padding) + ",0)"; })
bar.append("rect") .attr({ "width": function(d) { return scale(d); }, "height": bar_height }) .style("fill", "lightgreen")
bar.append("rect") .attr({ "y": function(d) { return scale(d); }, "width": bar_width, "height": function(d) { return svg_height - scale(d); } }) .style("fill", "lightgreen")
水平代碼:函數
bar.append("text") .text(function(d) { return d; }) .attr({ //設置數值的顯示位置 "x": function(d) { return scale(d); }, "y": bar_height / 2, "text-anchor": "end" //讓字顯示在條的內部 })
bar.append("text") .text(function(d) { return d; }) .attr({ //x軸和y軸互換後 "y": function(d) { return scale(d); }, "x": bar_width / 2, "dy": 15,//相對y軸的偏移量 "text-anchor": "middle" //讓字居中對齊 })
最終效果:
spa