可視化工具D3.js教程 入門 (第八章)—— 一個簡單柱狀圖


直接上代碼:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>

<svg width="500" height="400"></svg>

</body>

<script>

    var data = [90,75,12,36,54,88,24,66];
    var margin = 30;//上下左右邊距

    var svg = d3.select('svg');
    var width = svg.attr('width');
    var height = svg.attr('height');
    //創建一個矩形分組
    var g = svg.append('g').attr('transform','translate('+ margin +','+ margin +')');

    //定義x軸比例尺
    var scaleX = d3.scaleBand()
        .domain(d3.range(data.length))//[0, 1, 2, 3, 4, 5, 6, 7]
        .rangeRound([0,width - margin*2]);//左右邊距30

    //定義Y軸比例尺
    var scaleY = d3.scaleLinear().domain([0,d3.max(data)]).range([height - margin*2,0]);//上邊距30   這里還得注意  range后面跟的參數  0放在第二位   因為y軸正方向是反的

    //繪制x y 軸
    var axisX = d3.axisBottom(scaleX);
    var axisY = d3.axisLeft(scaleY);
    g.append('g').attr('transform','translate(0,'+ (height - margin*2) +')').call(axisX);
    g.append('g').attr('transform','translate(0,0)').call(axisY);

    var rectP = 30;//柱狀圖間距
    var gs = g.selectAll('rect').data(data).enter().append('g');//分組

    //繪制矩形
    gs.append('rect')
        .attr('x',function (d,i) {
        return scaleX(i)+rectP/2;
    }).attr('y',function (d,i) {
        return scaleY(d);
    }).attr('width',function () {
        return scaleX.step() - rectP;
    }).attr('height',function (d,i) {
        return    height - margin*2 - scaleY(d);
    }).attr('fill','pink');

    //繪制文字
    gs.append('text')
        .attr('x',function (d,i) {
            return scaleX(i) + rectP/2;
        })
        .attr('y',function (d,i) {
            return scaleY(d);
        })
        .text(function (d,i) {
            return d;
        });

</script>
</html>

 

效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM