零基础自学前端 D3.js 初体验03 柱状图+排序

零基础自学前端 D3.js 初体验03 柱状图+排序

<!DOCTYPE html>

<html>

 

<head>

  <meta charset="utf-8">

  <title>d3</title>

</head>

<script src="https://d3js.org/d3.v4.min.js"></script>

 

<body>

 

  <button type="button" name="button" οnclick="mySort()">排序</button>

  <button type="button" name="button" οnclick="myAdd()">添加数据</button>

</body>

<script type="text/javascript">

  var width = 1000,

    height = 400,

    dataset = [50, 90, 124, 86, 73, 64, 110, 107],

    padding = {

      top: 20,

      right: 20,

      bottom: 20,

      left: 20

    },

    rectWidth = 30,

    rectStep = 35;

  var svg = d3.select("body")

    .append("svg")

    .attr("width", width)

    .attr("height", height)

 

  var rect = svg.selectAll("rect")

    .data(dataset)

    .enter()

    .append("rect")

    .attr("fill", "red")

    .attr("x", function(d, i) {

      return padding.left + i * rectStep;

    })

    .attr("y", function(d) {

      return height - padding.bottom - d;

    })

    .attr("width", rectWidth)

    .attr("height", function(d) {

      return d;

    });

 

  var text = svg.selectAll("text")

    .data(dataset)

    .enter()

    .append("text")

    .attr("fill", "aqua")

    .attr("font-size", "14px")

    .attr("text-anchor", "middle")

    .attr("x", function(d, i) {

      return padding.left + i * rectStep;

    })

    .attr("y", function(d) {

      return height - padding.bottom - d

    })

    .attr("dx", rectWidth / 2)

    .attr("dy", "1em")

    .text(function(d) {

      return d;

    });

 

  function draw() {

    var updateRect = svg.selectAll("rect")

      .data(dataset);

    var enterRect = updateRect.enter();

    var exitRect = updateRect.exit();

 

    var updateText = svg.selectAll("text")

      .data(dataset);

    var enterText = updateText.enter();

    var exitText = updateText.exit();

 

    updateRect.attr("fill", "red")

      .attr("x", function(d, i) {

        return padding.left + i * rectStep;

      })

      .attr("y", function(d) {

        return height - padding.bottom - d;

      })

      .attr("width", rectWidth)

      .attr("height", function(d) {

        return d;

      });

    enterRect.append("rect")

      .attr("fill", "red")

      .attr("x", function(d, i) {

        return padding.left + i * rectStep;

      })

      .attr("y", function(d) {

        return height - padding.bottom - d;

      })

      .attr("width", rectWidth)

      .attr("height", function(d) {

        return d;

      });

    exitRect.remove();

 

    updateText.attr("fill", "aqua")

      .attr("font-size", "14px")

      .attr("text-anchor", "middle")

      .attr("x", function(d, i) {

        return padding.left + i * rectStep;

      })

      .attr("y", function(d) {

        return height - padding.bottom - d

      })

      .attr("dx", rectWidth / 2)

      .attr("dy", "1em")

      .text(function(d) {

        return d;

      });

    enterText.append("text")

      .attr("fill", "aqua")

      .attr("font-size", "14px")

      .attr("text-anchor", "middle")

      .attr("x", function(d, i) {

        return padding.left + i * rectStep;

      })

      .attr("y", function(d) {

        return height - padding.bottom - d

      })

      .attr("dx", rectWidth / 2)

      .attr("dy", "1em")

      .text(function(d) {

        return d;

      });

    exitRect.remove();

  }

 

  function mySort() {

    dataset.sort(d3.ascending);

    draw();

  }

 

  function myAdd() {

    dataset.push(Math.floor(Math.random() * 100));

    draw();

 

  }

</script>

 

</html>

 

零基础自学前端,你要的学习资料到了-498854752

转载于:https://my.oschina.net/u/3388416/blog/896573

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值