<script>var width = 400;var height = 400;//创建画布var svg = d3.select('body').append('svg').attr('width',width).attr('height',height)var padding = {top:20,left:20,right:20,bottom:20}var rectstep = 35; //矩形的宽带偏白var rectwidth = 30;//矩形的宽var dataset = [216,86,158,76,203]// 根据数据填充矩形var rect = svg.selectAll('rect').data(dataset).enter().append('rect').attr('fill','steelblue').attr('x',function(d,i){return padding.left + i * rectstep;}).attr('y',function(d,i){return height - padding.bottom - d;}).attr('width',rectwidth).attr('height',function(d,i){return d;}) // 根据数据填充文本内容              var text = svg.selectAll('text').data(dataset).enter().append('text').attr('fill','white').attr('x',function(d,i){return padding.left + i * rectstep;}).attr('y',function(d,i){return height - padding.bottom - d;}).attr('text-anchor','middle') .attr('font-size','14px').attr('dx',rectwidth/2)
                      .attr('dy','1em').text(function(d,i){return d;})function draw(){// 获取矩形的update部分var updateRect = svg.selectAll('rect').data(dataset);// 获取矩形的enter部分var enterRect = updateRect.enter();// 获取矩形的exit部分var exitRect = updateRect.exit();// update部分处理办法
                updateRect.attr("fill","steelblue").attr("x",function(d,i){return padding.left + i * rectstep;}).attr("y",function(d,i){return height - padding.bottom - d;}).attr("width",rectwidth).attr("height",function(d,i){return d;})//enter部分处理办法
                enterRect.append("rect").attr("fill","steelblue").attr("x",function(d,i){return padding.left + i * rectstep;}).attr("y",function(d,i){return height - padding.bottom - d;}).attr("width",rectwidth).attr("height",function(d,i){return d;})            // exit部分处理办法
                exitRect.remove();  // 获取文本的update部分var updateText = svg.selectAll('text').data(dataset)// 获取文本的enter部分var enterText = updateText.enter();// 获取文本的exit部分var exitText =  updateText.exit();// 文本update部分的处理办法
                updateText.attr("fill","white") .attr("font-size","14px").attr("text-anchor","middle").attr("x",function(d,i){return padding.left + i * rectstep;}).attr("y",function(d,i){return height- padding.bottom - d;}).attr("dx",rectwidth/2)
                          .attr("dy","1em").text(function(d,i){return d;});// 文本enter部分处理办法
                enterText.append("text").attr("fill","white").attr("font-size","14px").attr("text-anchor","middle").attr("x",function(d,i){return padding.left + i * rectstep;}).attr("y",function(d,i){return height- padding.bottom - d;}).attr("dx",rectwidth/2)
                         .attr("dy","1em").text(function(d,i){return d;}); // 文本exit部分的处理办法
                exitText.remove();}              </script><button onclick="mysort()">排序</button><button onclick="myadd()">增加数据</button><script>function mysort() {dataset.sort(d3.ascending);draw();}function myadd() {dataset.push( Math.floor(Math.random()*100));draw();}</script>

转载于:https://www.cnblogs.com/webmc/p/11076230.html

d3.js 封装一个方法更新柱状图,运用数据模板相关推荐

  1. 纯js封装一个无缝轮播

    下面的代码用纯js封装一个轮播组件.功能如下: 可上滑.下滑.左滑.右滑.无缝轮播. 移动端支持手势滑动. 可指定第一个显示的轮播图. 支持放置文字.图片和视频.带导航器. 导航器可自定义样式.若不想 ...

  2. 纯js封装一个多功能弹出框

    不借助其它的css代码和图片资源,可直接调用. 原创内容,请勿转载. 注意,不要直接复制文章里的封装代码,因为编辑器的原因,无论怎么编辑,它还是给修改了代码.文末提供了封装代码的下载地址(无需积分) ...

  3. 手把手教你用js封装一个导航栏组件

    文章目录 前言 一.实现思路介绍 二.代码 1.html代码 2.js代码 3.css代码 总结 前言 本文介绍如何用js封装一个组件,这里以导航栏为例. 看这篇文章你需要有一定的js基础哦 一.实现 ...

  4. [js] 用js写一个方法检测浏览器是否支持css3的属性

    [js] 用js写一个方法检测浏览器是否支持css3的属性 var div = document.createElement('div'); console.log(div.style.transit ...

  5. [js] 写一个方法获取图片的方向

    [js] 写一个方法获取图片的方向 <!DOCTYPE html> <html> <head><meta charset="utf-8"& ...

  6. [js] 写一个方法遍历指定对象的所有属性

    [js] 写一个方法遍历指定对象的所有属性 Object.keys().Object.values()只能遍历对象自有的属性,for in 可以遍历原型中的属性. 个人简介 我是歌谣,欢迎和大家一起交 ...

  7. [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入

    [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入 <body><input type=&qu ...

  8. [js] 写一个方法实现promise失败后自动重试

    [js] 写一个方法实现promise失败后自动重试 <!DOCTYPE html> <html lang="en"><head><met ...

  9. [js] 写一个方法,当给定数字位数不足8位时,则在左边补充0以补足8位数的方法

    [js] 写一个方法,当给定数字位数不足8位时,则在左边补充0以补足8位数的方法 function padNumber(n, targetLen, placeholder) {const arr = ...

最新文章

  1. Nginx之rewrite简述
  2. 用GAN也可以P图,效果还不输PS | 英伟达出品
  3. canvas js 绘图插件_[开盖即食]小程序图表插件eCharts实战
  4. 向算法传递函数:谓词
  5. QPW 行政区划字典表(td_area)
  6. java 多线程 聊天_Java做一个多线程类似于QQ的聊天程序。
  7. Python工作笔记-解决python使用nohup后台运行重定向不输出问题
  8. html5 canvas移动位置,HTML5 Canvas 移动
  9. Batch Normalization论文笔记
  10. soidworks 生成PCD点云文件
  11. NetScaler SDWAN 的前世今生
  12. Freebsd上使用pf防火墙
  13. 超哥笔记 --nginx入门(6)
  14. Web Services的基本原理
  15. VS2010/MFC编程入门之前言
  16. cas服务器源码,Cas服务端源码解析
  17. miui怎么用第三方图标包_Burn安卓手机图标包 手机美化从图标开始
  18. 仿站源码上传服务器,仿爱站站长查询工具网源码带后台完整版
  19. 常见排序算法原理及java实现
  20. python模拟生成微软序列号,python生成随机序列号

热门文章

  1. [CF413D]2048
  2. 组件方式开发 Web App全站 学习视频 分享
  3. 《OpenCV图像处理》——1.7 用户交互工具
  4. 【负载均衡】揭开F5 BIG-IP的神秘面纱(一)
  5. 我这样理解技术人的成长过程
  6. 使用vSphere Host Update Utility 4.0升级ESX 3到4.0版本
  7. 为Pdf批量添加水印
  8. iOS从零开始学习直播之音频2.后台播放和在线播放
  9. Alibaba Dubbo框架同步调用原理分析-2
  10. struts2:struts.xml配置文件详解