0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于d3.js的一些误解,为不同技术背景的人设计了专门的学习路线

zhKF_jqr_AI 来源:未知 作者:李倩 2018-11-16 09:28 次阅读

编者按:Google数据可视化工程师Ian Johnson澄清了关于d3.js的一些误解,并为不同技术背景的人设计了专门的学习路线。

最近推特上有不少关于学习d3.js很困难的讨论。我在聚会、会议、工作坊、邮件列表、slack聊天中也遇到过许多类似的讨论。尽管我认为许多困难是真实存在的,但是这次的讨论中有一个很突出的误解,我认为需要澄清一下,这有助于开始学习数据可视化的人。

译文:D3的问题在于,为了创建可视化,你必须同时深刻理解SVG、DOM、JavaScript、几何学、色彩空间、数据结构、标准模型和量子物理。

译文:关于这一话题的一些想法:我在各种工作坊和训练营中教过将近300位教员、员工、学生,这些人大部分都有硕士、博士文凭。我将在下面列出为何D3难以学习的一些关键原因(万一有人正学习D3或对此好奇)……

这些讨论的关键误解在于将d3和数据可视化混为一谈。想做数据可视化,必须学习和使用d3的所有功能,想要学习d3必须学习所有关于数据可视化的知识。相反,我想要强调d3是一个基于web沟通复杂的数据驱动的概念的工具箱。

我希望读者能对d3在基于web的数据可视化中的角色有一个更全面的了解。让我们用下Miles McCrocklin的譬喻,数据可视化就像制作家具。基于各种各样的原因,各种各样的人都可能想要做家具,特别是当他们看到别人制作的精美家具之后:

伊姆斯设计的椅子

人们看到了令人印象深刻的可视化之后,很自然地想要拥有自己制作的能力,他们会问这是怎么做的,然后经常听到“这是用d3做的”。

这是问题的开始,因为有人听说是用d3做的,就会想“噢,我应该去学d3”。他们去看了看文档,结果发现:

D3的API

许多工具看起来让人摸不着头脑,它们需要关于木工的知识,还有关于我们从未接触过甚或不知道需要考虑的一些流程的知识。我们感到无所适从,看起来触手可及的东西,学习路线却是如此漫长,如此变幻莫测。

我相信,这正是我们可以改进的地方,相比修改工具集,我们应该根据人们的目标为他们指引更合适的路径。让我们查看下人们可能想要制作交互式数据可视化的一些常见情况,以及相应的路线。

设计师

设计师早已习惯用视觉形式交流想法,他们知道如何分解复杂问题,并映射至相关概念。他们掌握了一组增强表达头脑中想法的能力的工具。他们常常不怎么熟悉编程,也许对基本的HTML和CSS有所了解,可以做出静态页面。当他们接触d3代码时,往往非常困惑:

哪部分是JavaScript?哪部分是d3?什么是异步请求?什么是DOM?

对设计师而言,d3提供了强大的能力和灵活性,但他们首先必须学习一些基础的技能。我经常推荐Scott Murray的d3教程(还有他写的Interactive Data Visualization for the Web一书)。其中介绍了基本的HTML、CSS、JavaScript概念。我同样建议设计师试着从Illustrator和Sketch等设计工具中导出SVG,然后加上交互功能和数据功能。

我经常鼓励设计师在开始阶段不必太在意进入/更新/退出模式,复用性和性能。集中精力制作想要的效果会更有帮助,一旦你差不多做出了想要的效果,会有很多友好的同事帮助你改善代码的性能和鲁棒性。

分析师

分析师早已习惯处理数据,编写查询,基于复杂的API调用强力函数。他们在RStudio或Jupyter Notebook这样强大的环境中构建自己的工作流。分析师学习d3最可能的原因是想要以某种方式发布自己的分析。尽管分析师通常比设计师更擅长编程,他们不太可能熟悉web浏览器环境下的编程生态:

SVG和Canvas的区别是什么?JavaScript下等价于Pandas/Tidy的是什么?我为什么不能用SVG的线绘制线图?路径的“d”属性是什么?

我同样建议分析师了解下web开发的初步知识,以熟悉DOM之类的概念。同样,我推荐Scott Murray的d3教程(还有他写的Interactive Data Visualization for the Web一书)。另外,我也推荐分析师参加一门JavaScript和JSON的速成课程,从他们通常使用的环境中导出JSON,以便在浏览器中进行可视化。

我常常鼓励分析师在开始阶段忽略d3的大量工具函数,因为他们一般已经熟悉自己的环境中的强力函数。相反,我认为分析师最好重点关注如何将数据导出为易于使用的JSON或CSV格式(最好和现有例子匹配)。

软件工程师

软件工程师是一个很有趣的情形,因为尽管他们具备了web开发的基础技能和知识,但d3的部分工具的思维方式与此不同:什么是进入/更新/退出模式?为何d3要搞乱我的DOM?转换……我该如何做单元测试呢?

许多开发者非常熟悉DOM和JavaScript,所以我的建议是实际上手试验。软件工程师可以忽略d3围绕DOM的部分,转而去熟悉用于数据可视化的一些关键工具,比如d3-scale。D3分为很多小模块,所以挑选你想要使用的功能相当简单。

我还想强调将数据的可视化和布局分离开来。软件工程师可以使用d3-hierarchy生成数据结构,然后用自己习惯使用的框架渲染成DOM。

银弹

上面这些情形是大概的原型,许多人的情况位于它们之间。主要思路是分清楚目标和限制,这样可以更好地引导各种各样的人入门d3.

我个人认为web标准是所有沟通的最小公分母。web的图形API并不理想,但如果你想将数据驱动的体验即时分享给数亿人,那么付出学习曲线相对陡峭的代价是合理的。2D图形、视觉设计、用户体验设计、信息架构、编程都可以直接迁移至数据可视化之外的领域。

不过,有时候椅子不过是一个坐的地方,我们没有时间和精力要求太多,去IKEA买一个就行!在这些情形下,有很多现成的制图库,它们只需要稍微配置下即可使用。

有时候你只需要这一件工具

Elijah Meeks制作了一份出色的d3 API地图,分类介绍d3工具箱的API:https://medium.com/%40Elijah_Meeks/d3-is-not-a-data-visualization-library-67ba549e8520

我也忍不住想推荐下我写的d3.js漫游指南,其中列出了我心目中d3的基本概念。

我过去一段时间访谈过几个数据可视化从业人员,他们在尝试表达自己的数据集的过程中学习了d3. 这些人的共同点在于他们在开始学习时就有明确的目标。在达成目标的过程中,他们学了d3中所需的部分。

所以,明确自己的目标,绘制数据可视化的广袤世界中自己的路线。你可以使用Blockbuilder搜索找到别人为你照亮的一些小径,在Observable中试验JavaScript效果,并在slack上加入超过3000个椅子匠——呃,我指的是数据可视化从业者——的d3频道。

祝你好运,期待早日看到你的可视化作品!

感谢Erik Hazzard、Kerry Rodden、Zan Armstrong、Yannick Assogba、Adam Pearce、Nadieh Bremer给这篇文章的反馈意见。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据驱动
    +关注

    关注

    0

    文章

    128

    浏览量

    12384
  • 可视化
    +关注

    关注

    1

    文章

    1200

    浏览量

    21031
  • 数据可视化
    +关注

    关注

    0

    文章

    471

    浏览量

    10360

原文标题:量体裁衣:选择适合自己的d3.js可视化学习路线

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于keil的一些学习资料

    本帖最后由 eehome 于 2013-1-5 09:45 编辑 关于keil的一些学习资料。
    发表于 10-30 00:19

    菜鸟求救,关于学习路线方面的问题

    囫囵吞枣看了半个月的关于这方面的书和一些视频,但是没人指导很困惑啊,连学习路线是怎么样的都不清楚啊。是不是先学怎么样把linux嵌到2440里面去,然后再学如何在linux下编那些外设
    发表于 04-22 12:01

    新人求一些关于ARM学习一些经验

    很弱根本看不懂什么帮助文档。小弟想少走一些弯路 还有就是小弟是3本学校 不是什么好的学校 想长一些本事希望过来的人帮助小弟提供套比较好的
    发表于 06-22 20:06

    介绍学习Linux的一些建议

    本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“O'Reilly原版Linux图书 ”,而且出版社还提供个非常好的路线
    发表于 08-18 02:17

    单片机学习路线

    点模拟电子技术以及电工电子技术,说白就是了解一些三极管,二极管特性,以及其他的数码管,电容等物理常用电器件,这些我们在设计单片机电路板的时候必须了解这方面的知识
    发表于 08-28 15:21

    分享PCB 设计的一些心得及入门资料

    各位朋友:学习PCB设计已有个月了,终于能自行设计简单的PCB板,在近个月的学习过程中有
    发表于 12-23 10:00

    求大神分享一些关于FPGA设计的学习经验

    请求大神分享一些关于FPGA设计的学习经验
    发表于 04-15 06:47

    求大神分享一些关于Altium Designer的学习笔记

    请求大神分享一些关于Altium Designer的学习笔记
    发表于 04-21 07:00

    关于stm32的一些简单的介绍

    #序言本文章是关于stm的一些简单的介绍,全部都是个人学习一些经验总结,分享给想要自学stm32的朋友们用于入门。其中部分内容借鉴于《stm32中文参考手册》和《cortex-m
    发表于 02-24 06:30

    关于PID一些常用知识

    本文档详细介绍分析关于PID的一些常用知识
    发表于 08-29 14:22 2次下载

    关于微服务的一些问题的解答

    微服务确实很受欢迎,但是对于微服务的误解也是事实,本文对这些误解一一来介绍下: 、微服务不够微? 尽管微服务定义的很明确,但是开发者社区对它的解释却颇有争议,主要的一些问题如下: 1
    发表于 10-11 11:27 0次下载
    <b class='flag-5'>关于</b>微服务的<b class='flag-5'>一些</b>问题的解答

    关于人工智能的机器学习一些知识

    机器学习是人工智能的个子集,它为机器提供自动学习和改进的能力,无需任何明确的编程。而深度学习,机器
    发表于 08-07 15:52 967次阅读

    关于学习Linux的一些建议

    不管是在生活还是工作中,每个人都会逐渐养成一些小习惯。坏习惯旦形成就很难改正,所在在系统学习 Linux 之前,给大家一些建议,刻意去培养一些
    发表于 07-14 14:22 623次阅读

    Moore Moore的一些路线预测

    这些标度目标推动了该行业的一些重大技术创新,包括材料和工艺的变化,如 high-κ栅极电介质和应变增强(strain enhancement),以及在不久的将来,新的架构,如栅极全方位(GAA);替代高迁移率沟道材料和新的3D
    的头像 发表于 05-17 15:11 2221次阅读
    Moore Moore的<b class='flag-5'>一些</b><b class='flag-5'>路线</b>预测

    学习linux内核的一些建议

    学习linux内核,这个可不像学门语言,c或者java个月或者3月你就能精通掌握。学习linux内核是需要
    发表于 05-07 15:20 641次阅读
    <b class='flag-5'>学习</b>linux内核的<b class='flag-5'>一些</b>建议