学习d3js有没有一个系统的学习方法,请前辈或者过来的长辈赐教?
(复制自知乎,就不做编辑了)
默认排序按时间排序
7 个回答
恰好刚看了两天D3,有点感想,供参考。
d3的学习曲线确实比较陡,因为它的思想和我们通常绘图的方式不大一样:
1、它是声明式的,不是命令式的
d3的第一个核心是:数据驱动的dom元素创建,把这个思想上的弯绕过来,掌握1/3了
2、它是数据处理包,不是图形绘制包
d3的第二个核心是:它的大量的api,提供的是对数据的转换与处理,无论是scale、layout还是svg.line等,都仅仅是对数据的处理,和绘制图形与DOM操作没有半毛关系。把这个思想上的弯绕过来,又掌握1/3了
3、它的api通常返回的是一个函数,这个函数的具体功能,通过函数对象的方法约定。
d3的javascript写法不是那么符合常人的逻辑,比如:调用d3.svg.line(),这个我们获得的是一个line函数,作用是把原始数据转化成svg的path元素的d属性需要的字符串,如果连起来写的话是这样:
var nd=d3.svg.line()(data); 这样获得的nd才是可以塞给path的d属性的东西。把这个思想上的弯绕过来,又掌握1/3的
以上三点转过来以后,基本算理解d3背后的思路了,大约看文档也可以独立写点东西出来了。d3的使用模式如下:
step1:准备数据
step2:创建dom
step3:设置属性
不过,由于D3是用svg绘图,所以,还得花点功夫学下svg。
接下来,挨个的把api通读一遍,在console里试试各个api的作用,基本ok了。
谢邀,其实学习任何东西都差不多,既然你问的是d3,我就用d3为例简单说说我的学习方法(之前我也没看过这东西)。
首先打开其官方文档mbostock/d3Wiki我看了最上面的介绍,由此得知,d3使用的是css、js以及SVG(SVG是一种矢量图),还有d3主要是用来做数据图表的。
然后我一般习惯直接看API文档APIReference,因为可以快速看到这个项目的基本结构。d3主要核心有selection、transition、array、math、loading、format、color、namespace,可以看到主要是数据处理等基本功能,selection是选择器,transition是动画,array和math还有format是数据处理,loading是Ajax,color自然是颜色处理,namespace是命名空间(全局变量之类的)。然后其他的部分有scale缩放、svg矢量图、time时间、geo地图、geom几何图形、behaviour行为,这些都是一些表现方法。有不明白的API可以再细看,比如behaviour,有drag和zoom,很明显是拖拽和缩放,一般这2中行为都是用在地图服务中的。
现在我们知道了d3能用来做什么了,回过头来也可以看看例子Gallery,想想你能实现这个例子吗?即使不能,先不要看代码,尝试自己调用API去实现,检查一下你对API的理解,无论实现与否,都再看看例子中的代码,比你的是否更好?调用了什么你不知道的API?使用了什么你不知道的用法?然后查API,看懂它,然后循环以上步骤,直到把API掌握到你所认为足够的程度。
最后当你掌握它到某种程度的时候,你可以帮助完善这个项目,开源项目的魅力就在这里。无论任何你或d3的问题,你都可以到这里提交Issues或者改进它,提交PullRequests,包括文档的改进。即使作者没有时间帮助你,我相信20000多的关注者也总有人会帮助你的。当然你还可以遵从官方的建议,到这里StackOverflow和GoogleGroup交流。
杨疯疯 摄影爱好者
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了,这是原因之二。
看馒头华华的博客,我不到两周学完了。感觉很容易。为了感谢他,我还买了本他的书。
现在正在结合实际需求开发,感觉画图表不是技术问题,而是审美问题。
Batdog 即便我身处果壳之中,仍自以为是无限宇宙…
最近在学d3js.
觉得Mike Bostock的网页上的Introdution和相关的Slides都很有帮助。此外,我发现这个视频讲的很清楚:https://www.youtube.com/watch?v=8jvoTV54nXw。跟着视频把上边的示例过一遍基本上对d3就有个大概的了解和感受了。
你听得到520 开始码代码的搬砖人
正在学这个,一开始是跟着数据可视化这个网站的教程在学,学完后上D3官网,学上面的例子吧。跟着码代码
我刚开始学,准备用Getting Started with D3和D3 Tutorial by the Interactive Data Lab, University ofWashington先了解一下