zoukankan      html  css  js  c++  java
  • 可视化工具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>

    效果:

  • 相关阅读:
    全代码实现ios-4
    集训第一次周赛题目及题解
    网站登录时密码忘记,通过向邮箱发送验证链接实现重置密码的实现方法
    hdu 1861-游船出租
    c#获取或修改配置文件
    今天做php经典实例,发现,我是对的,面试官给我说错了
    HDU 4637 Rain on your Fat brother 线段与半圆和线段交 简单题
    Qt之图标切分与合并
    标准容器的共性及举例
    如何提高数据库update更新的速度
  • 原文地址:https://www.cnblogs.com/zhinian-/p/12603859.html
Copyright © 2011-2022 走看看