d3.js 封装一个方法更新柱状图,运用数据模板
<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 封装一个方法更新柱状图,运用数据模板相关推荐
- 纯js封装一个无缝轮播
下面的代码用纯js封装一个轮播组件.功能如下: 可上滑.下滑.左滑.右滑.无缝轮播. 移动端支持手势滑动. 可指定第一个显示的轮播图. 支持放置文字.图片和视频.带导航器. 导航器可自定义样式.若不想 ...
- 纯js封装一个多功能弹出框
不借助其它的css代码和图片资源,可直接调用. 原创内容,请勿转载. 注意,不要直接复制文章里的封装代码,因为编辑器的原因,无论怎么编辑,它还是给修改了代码.文末提供了封装代码的下载地址(无需积分) ...
- 手把手教你用js封装一个导航栏组件
文章目录 前言 一.实现思路介绍 二.代码 1.html代码 2.js代码 3.css代码 总结 前言 本文介绍如何用js封装一个组件,这里以导航栏为例. 看这篇文章你需要有一定的js基础哦 一.实现 ...
- [js] 用js写一个方法检测浏览器是否支持css3的属性
[js] 用js写一个方法检测浏览器是否支持css3的属性 var div = document.createElement('div'); console.log(div.style.transit ...
- [js] 写一个方法获取图片的方向
[js] 写一个方法获取图片的方向 <!DOCTYPE html> <html> <head><meta charset="utf-8"& ...
- [js] 写一个方法遍历指定对象的所有属性
[js] 写一个方法遍历指定对象的所有属性 Object.keys().Object.values()只能遍历对象自有的属性,for in 可以遍历原型中的属性. 个人简介 我是歌谣,欢迎和大家一起交 ...
- [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入
[js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入 <body><input type=&qu ...
- [js] 写一个方法实现promise失败后自动重试
[js] 写一个方法实现promise失败后自动重试 <!DOCTYPE html> <html lang="en"><head><met ...
- [js] 写一个方法,当给定数字位数不足8位时,则在左边补充0以补足8位数的方法
[js] 写一个方法,当给定数字位数不足8位时,则在左边补充0以补足8位数的方法 function padNumber(n, targetLen, placeholder) {const arr = ...
最新文章
- Nginx之rewrite简述
- 用GAN也可以P图,效果还不输PS | 英伟达出品
- canvas js 绘图插件_[开盖即食]小程序图表插件eCharts实战
- 向算法传递函数:谓词
- QPW 行政区划字典表(td_area)
- java 多线程 聊天_Java做一个多线程类似于QQ的聊天程序。
- Python工作笔记-解决python使用nohup后台运行重定向不输出问题
- html5 canvas移动位置,HTML5 Canvas 移动
- Batch Normalization论文笔记
- soidworks 生成PCD点云文件
- NetScaler SDWAN 的前世今生
- Freebsd上使用pf防火墙
- 超哥笔记 --nginx入门(6)
- Web Services的基本原理
- VS2010/MFC编程入门之前言
- cas服务器源码,Cas服务端源码解析
- miui怎么用第三方图标包_Burn安卓手机图标包 手机美化从图标开始
- 仿站源码上传服务器,仿爱站站长查询工具网源码带后台完整版
- 常见排序算法原理及java实现
- python模拟生成微软序列号,python生成随机序列号