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,一经查实,立即删除!

相关文章

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 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通…

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

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

IIS网站的权限设置问题

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

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

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

煲仔

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

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

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

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

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

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

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

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

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

angular接口传参

1、service文件 创建xxx.service.ts文件 import { Injectable, Inject } from angular/core;import { Observable } from rxjs;import { map } from rxjs/operators;import { HttpClient } from angular/common/http;Injectable({ providedIn: root})export class ErrorCond…

https网络编程——如何建立利用根证书(凭证)签发建立中继证书(凭证)详解

参考:如何建立利用根证书(凭证)签发建立中继证书(凭证)详解 地址:https://qingmu.blog.csdn.net/article/details/108221568?spm1001.2014.3001.5502 目录在建立中继之前需要自建根证书建立根证书的具体步…

NURBS曲线与曲面

B样条方法在表示与设计自由型曲线曲面形状时显示了强大的威力,然而在表示与设计初等曲线曲面时时却遇到了麻烦。因为B样条曲线包括其特例的Bezier曲线都不能精确表示出抛物线外的二次曲线,B样条曲面包括其特例的Bezier曲面都不能精确表示出抛物面外的二次…

https网络编程——如何利用中继证书(凭证)建立服务器证书

参考:如何利用中继证书(凭证)建立服务器证书 地址:https://qingmu.blog.csdn.net/article/details/108225569?spm1001.2014.3001.5502 目录建立服务器证书的前提是要建立中继证书建立服务器证书的具体步骤1、建立一个目录&#x…

上传图片

2019独角兽企业重金招聘Python工程师标准>>> private File imageFile;// 上传文件名称private String imageFileFileName;// 上传文件类型private String imageFileContextType; InputStream is new FileInputStream(imageFile);String suffixName imageFileFileN…

https网络编程——如何利用中继证书(凭证)建立客户端证书

参考:如何利用中继证书(凭证)建立客户端证书 地址:https://qingmu.blog.csdn.net/article/details/108226592?spm1001.2014.3001.5502 目录建立客户端证书的前提是要建立中继证书建立客户端证书的具体步骤1、建立一个目录&#x…

2019.2.4 nfs原理和安装实验

NFS 访问一个本地文件还是NFS共享文件对于客户端而言都是透明的,当文件打开的瞬间,内核会作出一个决定,如果是本地文件内核会将本地NFS共享文件内核会将NFS共享文件的所有引用传递给——》NFS客户端枢中 NFS客户端是通过TCP/IP协议及模块向NF…

形容人的内核是什么意思_成语雪泥鸿爪是形容什么的?雪泥鸿爪什么意思?蚂蚁庄园2020年12月10日答案...

斑马线和斑马什么关系?大家都知道斑马和斑马线,但是两者之间有什么关系?蚂蚁庄园12月10日提到了这个问题,我们一起来看看正确答案吧。问题:斑马线和斑马有什么关系?答案:横线酷似斑马纹答案解析…

.Net 2.0里有一个有用的新功能:迭代器

下面内容节选至MSDN2005。迭代器(C# 编程指南) 迭代器是 C# 2.0 中的新功能。迭代器是方法、get 访问器或运算符,它使您能够在类或结构中支持 foreach 迭代,而不必实现整个 IEnumerable 接口。您只需提供一个迭代器,即…