每周小节-2 d3-zoom,pan,brush阅读心得 & d3.js on angular读书笔记


总结一下这周学习代码的心得:

工程地址是  https://github.com/msand/d3zoompanbrushchart


代码的主要工作大致是这样的:

0.初始化(建图,坐标轴,数据,线段)

1.新载入一组数据时候对图像的调整(坐标轴,数据,曲线)

2.图像随浏览器边框大小变化而变化

3.1和图2之间的相关性,即对图1缩放时,要调整图2brush的位置(onZoom函数);图2brush改变的时候,要相应调整图1的图像(线段,数据)(onBrush函数)

 

虽然没有上手写一遍,但是阅读下来也是受益匪浅。

有的语句用了很长的连缀,乍一看完全不知道在写什么,但是输出变量以后就能清楚在干什么,再结合书和资料很快就能看懂其意图。

对于代码功能的理解都写在了代码注释里。

第一次用csdn,似乎可以从这里点进代码链接:  https://code.csdn.net/snippets/1634598

 

目前还没有对代码进行过较大的改动来实现别的效果,都是在原图的基础上进行的一些小操作。

 

 

在理解代码中碰到的一些小点和疑惑:


  1. CSS margin: x1,x2,x3,x4 (从上外边距开始顺时针顺序,若某个值没有,则与其对面的值相同,若只有一个则为正方形)

 

   2. window 对象。它表示浏览器窗口。

       所有 JavaScript全局对象、函数以及变量均自动成为 window对象的成员。

       全局变量是 window对象的属性。

       全局函数是 window对象的方法。

       甚至 HTML DOM document也是window对象的属性之一:

——引自http://www.w3school.com.cn/

 

  3.jQuery

       on() 方法在被选元素及子元素上添加一个或多个事件处理程序。

  语法

$(selector).on(event,childSelector,data,function,map)

  感觉需要学一下jQuery了?

 

 4. Typeof + var得到变量类型  <--这个应该还是很直观的

 

5.关于AMD规范:

 

【这段完全没弄懂,先跳过】

 

总结一下:感觉看了半天纠结在不重要的细节上…………

以后遇到这样的问题记一下,先看主要部分比较好。

 

 

6.关于逻辑运算符

逻辑 NOT运算符返回的一定是Boolean 值,而ORAND不一定

具体细节:http://www.w3school.com.cn/js/pro_js_operators_boolean.asp

 

7.重新预习了一遍数组的操作

D3.extent(array[,accessor])

e.g.d3.extent(numbers, function(d){return d % 7;});

 

8.关于交互:

8.1关于brush

D3.svg.brush():点击拖拽选择一个二维区域。

8.2关于svgtransform属性:translate(x,y)移动

8.3 SVG中的clipPath:这个算是选取框的精髓了,无论怎么缩放和移动,只在显示规定方框中的内容。

 

9.嵌套在function内部的function没有调用时是否会执行?

感觉当时纠结这个问题的时候一定是脑子瓦特了……

调用才会执行……function(){}相当于一个变量只给出了定义……

 

10.代码中有些一开始看上去奇怪的变量的和函数,比如updatingupdate()函数,= =看到后面发现,其实一共有2组数据valuevalue2,每组数据各自有两条曲线,updateupdateDataAndXYAccessor用于从第一组数据更新到第二组数据。

 

11.感觉需要再看下d3brushCh12

 

 

 

 

 

 

D3 on angular的学习心得:

 

D3.js部分:

 

关于svg作图:

使用chrome浏览器:没有设置widthheight的时候图片会被吞掉一部分,似乎默认大小是300px X 150px

 

关于数组:

1.array.forEach()thisArg的用法?感觉一般用的多的是callbackfunction(d,i)

2.array.map():

The newarray returned from map will always be the same length of our original array.

A commontask in data visualization is to convert data in one format to data in another.

3.sort :

  1.原数组改变 2.没有给排序的函数,会将数字转为字符串排序

4.d3.merge([[1,2], [3, [4,5]]])  // [1, 2, 3, [4, 5]]

 

关于动画和交互:

对应《精通d3.js》的Ch7Ch8,这部分pdf上讲得比较简略。

Eventsallow our visualizations to be interactive.

 

d3.select('select').on('change',function(){ alert(this.value); });

d3.select('select').on('change',function(){ alert(this.value); });

// the second event listener overrides the first

 

 

关于文件导入导出

if you’ve just been double clicking on HTML files and opening themin your browser, those HTML pages wont be able to make requests for our locallystored data files.

Tocircumvent this restriction, the simplest solution is to run a web server usingpython -m Simple HTTPServer from the command line in the directory from whichyou want to run your server

 

JSON is a subset of JavaScript

JSONobject keys must be in double quotes.

ValidJSON cannot contain function or

Dateobjects.

 

.parse 转换成一个对象

format.parse("April 27, - 2011");//=> a new date object

 

AngularJS:

Angularmakes it easy to create dynamic visualizations by handling updates on the scope

 

Directives:

varmyApp= angular.module('myApp', []);

myApp.directive('helloWorld',function(){

// TODO: finish directive

});

 

 

 

暂时只看到 Directives Creating a directive,剩下的只能这周再看了……感觉看得有些晕乎,需要再找些AngularJS相关的东西看。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值