【D3.js数据可视化实战】--(1)绘制网格线

我们常常使用常规图表(直方图,折线图等)来表现数据。为了清楚的表示数据在数轴上的哪个数值区间,会直接在矩形和点上标注数值。

除了这个办法外,还可以使用色调偏淡的网格作为背景参照。

本文介绍了如何使用D3绘制网格线的小技巧:

 

绘制效果:

 

思路很简单:

1 绘制SVG容器。

2 给SVG分组,并设置分组的样式类。

3 为分组分别添加横线和竖线。

 

关键技术介绍

(1) 生成一个10元素的数组:

(2) 定义x和y比例尺

x = d3.scale.linear().domain([0,1]).range([p, w - p])

x线性比例尺,将数组的值映射为实际的像素值,例如:

(3) 绘制SVG

var svg = d3.select("body").append("svg")
   .attr("width", w)
.attr("height",h);

 

(4) 给SVG添加分组,并设置样式类

var grid = svg.selectAll(".grid")
   .data(x.ticks(10))
 .enter().append("g")
   .attr("class", "grid");
 

(5) 添加线条

grid.append("line")
   .attr("x1", x)
   .attr("x2", x)
   .attr("y1", p)
   .attr("y2", h - p - 1);
…
 

本例很简单,可以使用下面的代码测试效果,你学会了吗?

完整代码:

<!DOCTYPE html>
<html>
         <head>
                   <metacharset="UTF-8" content="">
                   <title>linegrid</title>
                   <styletype="text/css">
                   //分组中线的样式,这里设置了颜色值,实际使用可以更淡,例如stroke: #ccc
                   .gridline {
                     stroke: #000;
                   }
                  
                   </style>
                   <scripttype="text/javascript" src="d3.js"></script><!--下载到本地-->
         </head>
 
 </head>
 <body>
   <script type="text/javascript">
 
var data = d3.range(10);// (1) 生成一个10元素的数组
 
var w = 960,
    h= 500,
    p= 40,//内边距
    x= d3.scale.linear().domain([0, 1]).range([p, w - p]), //(2) 定义x和y比例尺
    y= d3.scale.linear().domain([0, 1]).range([h - p, p]);
 
//(3) 绘制SVG
var svg = d3.select("body").append("svg")
   .attr("width", w)
   .attr("height", h);
 
//(4) 给SVG添加分组,并设置样式类,样式见<style>标签中的设置
var grid = svg.selectAll(".grid")
   .data(x.ticks(10))
 .enter().append("g")
   .attr("class", "grid");
//(5) 添加线条,设置起始坐标(x1,y1)和结束坐标(x2,y2)的值即可
//竖线
grid.append("line")
   .attr("x1", x)
   .attr("x2", x)
   .attr("y1", p)
   .attr("y2", h - p - 1);
 
//横线
grid.append("line")
   .attr("y1", y)
   .attr("y2", y)
   .attr("x1", p)
   .attr("x2", w - p + 1);
   
   </script>
  </body>
</html>


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
文件已上传到百度网盘,附件中是下载地址。真正免积分免费完整版,绝不出现仅下载到部分章节,书中广 告页要求QQ联系支付宝购买完整版的流氓行为! 欢迎免积分下载更多本人独有网上难寻觅的 高清IT电子书:http://download.csdn.net/user/sinophp123 人无我有,人有我优,人优我廉!我的版本是全网最清晰的独家制作版本,还不要资源分。 同样一本书,下我的就可以了! 本人上传资料的原则: (1)如果CSDN和网上其他地方已随处可见高清下载,本人不再上传。 (2)如果网上已有我还上传,那么肯定是经重新制作,如不再缺页,清晰度更高,或者加上书签。 (3)每本书都经过逐页纯手工精心处理,包括清晰度的增强,水印的去除。当然最重要的,是尽量保证有书 签方便您浏览。 (4)如果是中译版,文件名前半部分是英文原版书名,后面是中译版书名。 如:“Implementing.Responsive.Design-响应式Web设计实践”。书名经反复校对绝无一字错漏。 (5)每本pdf书默认都是有书签的。来源不限“某星”网站,还有各大网络书店和出版社官网的页码信息。 凡无书签的pdf文件名均含“_no.bookmark”字样,如“HTML5程序开发范例宝典_no.bookmark”。请不要再 浪费时间去寻找书签,肯定没有,网上别人提供的下载版本也绝对不会有(除非您是出版社内部人员!), 没有人会浪费自己时间逐页输入章节页码来费时费力免费给您制作。 (6)只提供中文书籍,您不用担心下载的是英文原版。 (7)只提供完整版,绝不上传只有部分章节的所谓“迷你书”,“试读版”。 (8)书中绝不含广告页和水印LOGO。 Data.Visualization.with.D3.js.Cookbook-D3.js数据可视化实战手册 [加]nick qi zhu 著(著) | 杨锐 刘夏 王超 张沙沙(译) | 人民邮电出版社 | 9787115360960 | 2014-09- 01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值