D3---01基础的柱状图制作(转)

  ---文章转自 http://d3.decembercafe.org/index.html  ,Created by 十二月咖啡馆。

  一个完整的柱形图包含三部分:矩形、文字、坐标轴。

  

  首先要布置一个大小合适的 SVG 画布:

 

  • 添加 SVG 画布 

    

//画布大小
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};

  上面定义了一个 padding,是为了给 SVG 的周边留一个空白,最好不要将图形绘制到边界上。

 

 

  • 定义数据和比例尺  

 

//定义一个数组
var dataset = [10, 20, 30, 40, 33, 24, 12, 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 轴使用序数比例尺,y 轴使用线性比例尺。要注意两个比例尺值域的范围。

 

  • 定义坐标轴

 

//定义x轴
var xAxis = d3.svg.axis().scale(xScale).orient("bottom");//定义y轴
var yAxis = d3.svg.axis().scale(yScale).orient("left");

  x 轴刻度的方向向下,y 轴的向左。

 

  • 添加矩形和文字元素 

 

//矩形之间的空白
var rectPadding = 4;//添加矩形元素
var rects = svg.selectAll(".MyRect").data(dataset).enter().append("rect").attr("class","MyRect").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("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 和 y 坐标要特别注意,要结合比例尺给予适当的值。

 

  • 添加坐标轴的元素  

 

//添加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);

  坐标轴的位置要结合空白 padding 的值来设定。

 

 

 

  

转载于:https://www.cnblogs.com/JesseP/p/10329397.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用UI控件之UIControl

1.UIControl概述UIControl继承于UIView,其子类 有:UIButton,UITextField,UISegmentedControl(分段控件),UISlider(滑块控件),UISwitch(开关控件),UIPageControl(分页控件)2.UISegmentedControl(分段控件)UIsegmentedControl中的每个segment都点击,相当于集成了多个UIButton,点击…

https网络编程——对称加密、非对称加密、单项加密的简单介绍

参考:对称加密、非对称加密、单项加密的简单介绍 地址:https://qingmu.blog.csdn.net/article/details/108213426?spm1001.2014.3001.5502 目录1、对称加密1.1、什么是对称加密?1.2、对称加密的优缺点是什么?1.3、常见的对称加密…

dnn中个性化服务的使用

1.什么是profiles(个性化服务)Profiles是系统面向用户提供的灵活性的个体信息的容器,一个用户的Profile可以使以下一种或多种的集合: (1) 简单的字符串或其他基础类型 (2) 一个序列化的实体 (3&…

洛谷P1073 Tarjan + 拓扑排序 // 构造分层图

https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通…

昨日观看《龙虎门》

本来很想看《谍中谍3》的,想看看汤姆克鲁斯的风采。不过还是选择的《龙虎门》,早就看过介绍说《龙虎门》主要是给人视觉上的冲击,注重打斗。故事的情节比较简单,两兄弟碰面,大哥决定和自己的老大退出江湖引发上面帮派的…

zabbix2.2.3 VMware Vsphere exsi监控配置步骤

zabbix2.2.3 VMware Vsphere exsi监控配置步骤 zabbix2.2.3 VMware Vsphere exsi监控配置步骤,1,添加监控主机2,添加聚集macro;{$PASSWORD} yoodo.com{$URL} http://ip/sdk{$USERNAME} root3,关联监控模板模板用Template Virt VMware;posted on 2014-04-30 10:22 秦瑞It行程…

https网络编程——SSL的加密和解密过程

参考:SSL的加密和解密过程 地址:https://qingmu.blog.csdn.net/article/details/108214105?spm1001.2014.3001.5502 目录现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密加密解密的流程图现在的加密/解…

jQuery安装和语法

jQuery是一个JavaScript函数库&#xff0c;可实现HTML元素选取及操作、CSS 操作、HTML事件函数、JavaScript特效和动画、HTML DOM遍历和修改、AJAX等功能。 在html中引用jQuery&#xff0c;需要在head部分通过script并指定src引入 <script src"jquery路径及文件名"…

IIS网站的权限设置问题

2019独角兽企业重金招聘Python工程师标准>>> IIS中的权限与NTFS权限设置的区别&#xff1a; 当浏览器访问被IIS禁止的页面时&#xff0c;返回404错误页面 但浏览器访问被NTFS禁止的文件时&#xff0c;提示用户登录界面 转载于:https://my.oschina.net/changeme/blog…

关于.Net2.0下配置架构的使用

上次用到配置文件,就花了一些时间研究了一下.Net2.0下的配置文件架构,当时感觉确实很强大,完善,但看的有些头晕.迷迷糊糊把实现了要求,就没有再深入研究.最近,想在配置文件里实现一个复杂的配置,多层次嵌套的配置文件,再把.Net中的配置文档研究了一下&#xff0c;经过这两次的研…

https网络编程——openssl中后缀名文件说明以及常用的证书协议

参考&#xff1a;openssl中后缀名文件说明 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/108215177?spm1001.2014.3001.5502 参考&#xff1a;Openssl常用的证书协议有哪些&#xff1f; 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/1082…

idea使用教程

https://www.jianshu.com/p/9c65b7613c30转载于:https://www.cnblogs.com/tnt-33/p/10333267.html

pgbench

参考: http://www.postgres.cn/docs/10/pgbench.html pgbench是pg自带的一个性能测试工具 你也能利用它做性能测试以外的事情 -- 创建测试库 create database pgbench;-- 使用pgbench命令, 初始化测试表 pgbench -i -U zhangtianxiao -p 6001 -d pgbench-- 使用默认表, 默认sq…

煲仔

湖南的煲仔似乎在我毕业工作的那年侵占了大街小巷&#xff0c;满街的煲仔店向外热滋滋的喷着香味&#xff0c;便宜又好味。那几年在外的觅食&#xff0c;除了常德津市牛肉米饭外&#xff0c;煲仔似乎是我唯一的选择。将米放入煲内&#xff0c;加水在火上煮至半熟&#xff0c;再…

https网络编程——中继(负载均衡)工作原理

参考&#xff1a;中继&#xff08;负载均衡&#xff09;工作原理 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/108217055?spm1001.2014.3001.5502 中继&#xff08;负载均衡&#xff09;工作原理 在我们当前社会&#xff0c;比如我们上某宝&#xff0c;某…

2014第18周六

刚睡觉起来&#xff0c;下午将近六点左右回来感觉有点困&#xff0c;就睡了一会儿直到现在刚起来感觉整个人还是很困。今天陪朋友和他妈妈一起去西湖玩了下&#xff0c;转的真有点累。五一假期就这样过完了&#xff0c;没看什么有意义的电视和书籍&#xff0c;也没有去据说很热…

全套支付宝系统架构(内部架构图)【收藏】

据说这是对支付宝系统体系最全最强解析&#xff0c;推荐收藏学习&#xff01; 转载于:https://www.cnblogs.com/SH-xuliang/p/10340745.html

iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager

2019独角兽企业重金招聘Python工程师标准>>> 1、在Documents里创建目录 创建一个叫test的目录,先找到Documents的目录&#xff0c; [cpp] view plain copy NSArray *paths NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); …

触发器与约束的适用条件

触发器是一种特殊类型的存储过程&#xff0c;当对数据库进行UPDATE,DELETE或INSERT时,触发器会生效.触发器可以查询其它表&#xff0c;而且可以包含复杂的 SQL 语句。 创建触发器语法&#xff1a;CREATE TRIGGER trigger_nameON { table | view }[ WITH ENCRYPTION ]{{ { FOR |…

https网络编程——使用openssl库自建根证书

参考&#xff1a;如何自建根证书&#xff1f;使用openssl库自建根证书带图详解 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/108217572?spm1001.2014.3001.5502 目录根证书的普通用途自建根证书步骤1、创建一个目录&#xff0c;存放所有证书有关资料2、进入…