利用D3.js实现最简单的柱状图示例代码


Posted in Javascript onDecember 09, 2016

首先把效果图放出来:

利用D3.js实现最简单的柱状图示例代码

具备了一个柱状图的基础元素:柱形,坐标轴,刻度,数值等。

不得不说,d3.js比直接用的echarts更麻烦,但是确实更自由。

来看看如何实现吧。

//确定画布的大小
var width = 400;
var height = 400;
//在 body 里添加一个 SVG 画布 
var svg = d3.select("body")
  .append("svg")
  .attr("width", width)
  .attr("height", height);
//定义画布周围空白的地方
var padding = {left: 30, right: 30, top: 20, bottom: 20};
//定义一个数组
var dataset = [10, 20, 30, 40, 30, 20, 10, 5];
//x轴的比例尺
var xScale = d3.scale.ordinal()
  .domain(d3.range(dataset.length))
  .rangeRoundBands([0, width - padding.left - padding.right]);
//y轴的比例尺
var yScale = d3.scale.linear()
  .domain([0, d3.max(dataset)])
  .range([height - padding.top - padding.bottom, 0]);
//定义x轴
var xAxis = d3.svg.axis()
  .scale(xScale)
  .orient("bottom");
//定义y轴
var yAxis = d3.svg.axis()
  .scale(yScale)
  .orient("left");
//矩形之间的空白
var rectPadding = 4;
//添加矩形元素
var rects = svg.selectAll(".MyRect")
  .data(dataset)
  .enter()
  .append("rect")
  .attr("class", "MyRect")
  .attr("fill", "steelblue")
  .attr("transform", "translate(" + padding.left + "," + padding.top + ")")
  .attr("x", function (d, i) {
   return xScale(i) + rectPadding / 2;
  })
  .attr("y", function (d) {
   return yScale(d);
  })
  .attr("width", xScale.rangeBand() - rectPadding)
  .attr("height", function (d) {
   return height - padding.top - padding.bottom - yScale(d);
  });
//添加文字元素
var texts = svg.selectAll(".MyText")
  .data(dataset)
  .enter()
  .append("text")
  .attr("class", "MyText")
  .attr("fill", "white")
  .attr("text-anchor", "middle")
  .attr("transform", "translate(" + padding.left + "," + padding.top + ")")
  .attr("x", function (d, i) {
   return xScale(i) + rectPadding / 2;
  })
  .attr("y", function (d) {
   return yScale(d);
  })
  .attr("dx", function () {
   return (xScale.rangeBand() - rectPadding) / 2;
  })
  .attr("dy", function (d) {
   return 20;
  })
  .text(function (d) {
   return d;
  });
//添加x轴
svg.append("g")
  .attr("class", "axis")
  .attr("transform", "translate(" + padding.left + "," + (height - padding.bottom) + ")")
  .call(xAxis);
//添加y轴
svg.append("g")
  .attr("class", "axis")
  .attr("transform", "translate(" + padding.left + "," + padding.top + ")")
  .call(yAxis);

总结

好了,以上就是利用D3.js实现最简单柱状图的例子,怎么样?简单吧?希望本文的内容对刚学习d3.js的朋友们能有所帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JS中产生20位随机数以0-9为例也可以是a-z A-Z
Aug 01 Javascript
js的touch事件的实际引用
Oct 13 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
Jan 17 Javascript
剖析Node.js异步编程中的回调与代码设计模式
Feb 16 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
jQuery密码强度验证控件使用详解
Jan 05 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
Vue双向绑定实现原理与方法详解
May 07 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 #Javascript
Angular.Js的自动化测试详解
Dec 09 #Javascript
浅析javascript中的Event事件
Dec 09 #Javascript
清除js缓存的多种方法总结
Dec 09 #Javascript
Vue.js计算属性computed与watch(5)
Dec 09 #Javascript
JS新包管理工具yarn和npm的对比与使用入门
Dec 09 #Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 #Javascript
You might like
制作美丽的拉花
2021/03/03 冲泡冲煮
PHP 日常开发小技巧
2009/09/23 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
浅谈Python 中整型对象的存储问题
2016/05/16 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
Python实现12306火车票抢票系统
2019/07/04 Python
详解Python打包分发工具setuptools
2019/08/05 Python
python实现猜拳小游戏
2020/04/05 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
python 制作网站小说下载器
2021/02/20 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
必须要使用游标的SQL语句有那些
2012/05/07 面试题
初中校园之声广播稿
2014/01/15 职场文书
2015年教师节主持词
2015/07/03 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏