d3.js学习

学习d3js有没有一个系统的学习方法,请前辈或者过来的长辈赐教?

(复制自知乎,就不做编辑了)

添加评论 

分享

 

默认排序按时间排序

7 个回答

15赞同反对,不会显示你的姓名

ciga2011

15 人赞同

恰好刚看了两天D3,有点感想,供参考。
d3
的学习曲线确实比较陡,因为它的思想和我们通常绘图的方式不大一样:
1
、它是声明式的,不是命令式的
d3
的第一个核心是:数据驱动的dom元素创建,把这个思想上的弯绕过来,掌握1/3
2
、它是数据处理包,不是图形绘制包
d3
的第二个核心是:它的大量的api,提供的是对数据的转换与处理,无论是scalelayout还是svg.line等,都仅仅是对数据的处理,和绘制图形与DOM操作没有半毛关系。把这个思想上的弯绕过来,又掌握1/3
3
、它的api通常返回的是一个函数,这个函数的具体功能,通过函数对象的方法约定。
d3
javascript写法不是那么符合常人的逻辑,比如:调用d3.svg.line(),这个我们获得的是一个line函数,作用是把原始数据转化成svgpath元素的d属性需要的字符串,如果连起来写的话是这样:
var nd=d3.svg.line()(data);
这样获得的nd才是可以塞给pathd属性的东西。把这个思想上的弯绕过来,又掌握1/3

以上三点转过来以后,基本算理解d3背后的思路了,大约看文档也可以独立写点东西出来了。d3的使用模式如下:
step1
:准备数据
step2
:创建dom
step3
:设置属性

不过,由于D3是用svg绘图,所以,还得花点功夫学下svg

接下来,挨个的把api通读一遍,在console里试试各个api的作用,基本ok了。

发布于 2014-02-15 1条评论 感谢 

分享

 收藏  没有帮助  举报  作者保留权利

25赞同反对,不会显示你的姓名

张铮铮 http://tych.io

25 人赞同

谢邀,其实学习任何东西都差不多,既然你问的是d3,我就用d3为例简单说说我的学习方法(之前我也没看过这东西)。

首先打开其官方文档mbostock/d3Wiki我看了最上面的介绍,由此得知,d3使用的是cssjs以及SVGSVG是一种矢量图),还有d3主要是用来做数据图表的。

然后我一般习惯直接看API文档APIReference,因为可以快速看到这个项目的基本结构。d3主要核心有selectiontransitionarraymathloadingformatcolornamespace,可以看到主要是数据处理等基本功能,selection是选择器,transition是动画,arraymath还有format是数据处理,loadingAjaxcolor自然是颜色处理,namespace是命名空间(全局变量之类的)。然后其他的部分有scale缩放、svg矢量图、time时间、geo地图、geom几何图形、behaviour行为,这些都是一些表现方法。有不明白的API可以再细看,比如behaviour,有dragzoom,很明显是拖拽和缩放,一般这2中行为都是用在地图服务中的。

现在我们知道了d3能用来做什么了,回过头来也可以看看例子Gallery,想想你能实现这个例子吗?即使不能,先不要看代码,尝试自己调用API去实现,检查一下你对API的理解,无论实现与否,都再看看例子中的代码,比你的是否更好?调用了什么你不知道的API?使用了什么你不知道的用法?然后查API,看懂它,然后循环以上步骤,直到把API掌握到你所认为足够的程度。

最后当你掌握它到某种程度的时候,你可以帮助完善这个项目,开源项目的魅力就在这里。无论任何你或d3的问题,你都可以到这里提交Issues或者改进它,提交PullRequests,包括文档的改进。即使作者没有时间帮助你,我相信20000多的关注者也总有人会帮助你的。当然你还可以遵从官方的建议,到这里StackOverflowGoogleGroup交流。

发布于 2013-12-03 5条评论 感谢 

分享

 收藏  没有帮助  举报  作者保留权利

4赞同反对,不会显示你的姓名

杨疯疯 摄影爱好者

4 人赞同

d3.js是一个让我非常痛苦的东西。痛苦到什么程度?就是我本来想用它写一个项目,第二天我一怒之下决定彻底放弃,自己用了两周时间断断续续的写了一个轻量级的库(至少closure编译之后文件大小只有d3的零头,我要用的功能都有了),将数据和图像绑定在一起。可以参考:yyang/euterpe.js GitHub。不过很不好意思,还没时间写文档也example,如果有人star这个项目我就继续写了。

闲话少说,d3.js真正用起来还是挺方便的。如果你想学可以先看看他的examples,然后改一改,了解一下它的设计思路。之后可以过一遍他的文档,就是这个:https://github.com/mbostock/d3/wiki/API-Reference。有了这两个我相信任何具有javascript开发能力、开发经验的人都可以在一两天之内用起来。如果你之前不会javascript那么这时候就多照猫画虎看看别人怎么写的吧。

然而,若果想用好d3.js,最重要的并不是看完这些文档或者样例,而是要读一读代码里面的注释。d3.js的文档说实话写的非常不好(和维护者数量太少也有关系),有些方法并没有在文档中提到,而文档中有些效率非常低的方法。所以这就会导致有时图形复杂度提高之后性能爆烂。

因为文档的事情我给作者写了个信,问他要不要帮他完善文档。他不理我,所以我也就不用d3了,这是原因之二。

发布于 2013-12-03 添加评论 感谢 

分享

 收藏  没有帮助  举报  作者保留权利

2赞同反对,不会显示你的姓名

吃货改变世界

2 人赞同

看馒头华华的博客,我不到两周学完了。感觉很容易。为了感谢他,我还买了本他的书。
现在正在结合实际需求开发,感觉画图表不是技术问题,而是审美问题。

发布于 2015-11-27 1条评论 感谢 

分享

 收藏  没有帮助  举报  作者保留权利

2赞同反对,不会显示你的姓名

Batdog 即便我身处果壳之中,仍自以为是无限宇宙

2 人赞同

最近在学d3js. 
觉得Mike Bostock的网页上的Introdution和相关的Slides都很有帮助。此外,我发现这个视频讲的很清楚:https://www.youtube.com/watch?v=8jvoTV54nXw。跟着视频把上边的示例过一遍基本上对d3就有个大概的了解和感受了。

发布于 2015-10-23 添加评论 感谢 

分享

 收藏  没有帮助  举报  作者保留权利

0赞同反对,不会显示你的姓名

你听得到520 开始码代码的搬砖人

正在学这个,一开始是跟着数据可视化这个网站的教程在学,学完后上D3官网,学上面的例子吧。跟着码代码

发布于 2016-07-20 添加评论 感谢 

分享

 收藏  没有帮助  举报  作者保留权利

0赞同反对,不会显示你的姓名

王培栋

我刚开始学,准备用Getting Started with D3D3 Tutorial by the Interactive Data Lab, University ofWashington先了解一下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值