【D3.js in Action 3 精译】1.1.2 D3.js 的适用场景

译注
上一节中我们了解了 D3 诞生的技术背景——为了满足 Web 可访问数据的可视化需求。本节再来看看 D3.js 的适用场景是怎样的、在什么时候会考虑使用 D3.js。

1.1.2 D3.js 的适用场景

数据可视化领域正蓬勃发展,且备受青睐。过去十年间用于生成数据驱动图形的工具数量已呈现爆发式增长。一方面,我们有像 Microsoft Excel 这样的商业智能工具,它是一款常见的数据可视化入门级产品;还有像 Power BI 这样用于构建仪表盘的微软一站式解决方案;另一方面,数据科学家们经常利用 R 语言的 ggplot2 或 Python 中的 Matplotlib 来实现数据可视化效果。

而基于浏览器的拖拽式(point-and-click)数据可视化工具,如 Tableau、Flourish、Datawrapper 和 RAWGraphs 也已经成为主流,让您可以在投入最少技术储备的情况下创建出令人惊叹的作品。

最后,像 Highcharts、Chart.js 和 Plotly 等 JavaScript 库专门用于开发基于 Web 的交互式可视化效果。

上面列举的工具仅仅只是冰山一角,不一而足。

那么,在可视化工具的浩瀚海洋中,D3 又处于什么位置呢?我们又该在什么时候用、怎么用好它呢?应该说,尽管 D3 可以完全构建出上述工具库提供的任何图表,但它通常不是传统简单图表或探索阶段的首选工具。探索阶段考察的是最适合呈现当下数据的可视化类型。构建 D3 项目需要时间,而令 D3 真正大放异彩的,是复杂多变的、交互式的定制化项目环境。数据可视化远远不止创建折线图及散点图那么简单!虽然刚才提到的工具通常侧重于事先定义好的图表,但 D3 可以将数据绑定到任何图形元素,并像图 1.4 展示的乐谱那样,以独特的方式组合这些视觉元素来创建新的可视化效果。选择 D3 正是为了跳出思维定势,拥有更多自由思考的空间,不必受制于工具库所提供的开发能力。

图 1.4 D3 具备 SVG 和 Canvas 的绘图功
图 1.4 D3 具备 SVG 和 Canvas 的绘图功能,支持构建自定义可视化效果。该乐谱图由 Elijah Meeks 绘制

至于如何在数据可视化项目的范围内使用 D3,下面举例说明大致流程。首先是从现有数据集或手动收集的数据入手。在开始数据分析之前,通常会花费大量时间用于数据清洗、格式化等准备工作;而这正是 Python 和 R 语言的强项,借助它们往往可以发现潜藏的数据信息。Excel 由于对技术背景要求不高,也可以完成一些简单的数据整理与分析工作。您甚至可以通过 JavaScript 和 D3 提供的统计学方法(后续内容会讲解)进行基本的数据探索。

一旦数据分析开始进行,人们通常会创建一些原型(prototypes)来完善想要呈现的核心内容。借助 Tableau 和 RAWGraphs 可以让快速生成这些图表。这一步尤为重要,其间实现的效果往往无需过于花哨或精美。在原型设计阶段,大可不必耗费太多时间沉迷于自己的想法,有时甚至不得不忍痛割爱、反复推倒重来,直到找出最能突出数据核心主旨的可视化效果。网络图或许是个例外,遇到这样的项目通常直接使用 D3 就行了。

最后,一旦明确即将创建的可视化类型,如图 1.5 所示的桑基图(Sankey diagram),就可以用 D3 来编程了!现如今,代码的书写通常是在 React 或 Svelte 框架的单页应用(single-page applications,即 SPA)中实现的。
图 1.5 来自 Voilà 的获奖作品“打造未来可持续的包容性业务组合”

图 1.5 来自 Voilà 的获奖作品“打造未来可持续的包容性业务组合”(https://chezvoila.com/project/findevportfolio/).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android面试八股文】如何判断一个APP在前台还是后台?有哪几种方法?

文章目录 1. ActivityLifecycleCallbacks2. RunningTasks 和 RunningProcesses2.2.1 RunningTasks实现步骤示例代码解释与注意事项替代方案2.2 RunningProcesses实现步骤示例代码解释与注意事项总结3. 使用 Activity 生命周期方法在最新的 Android 开发环境中,推荐的做法是使用…

slot插槽详解及动态插槽的使用

slot插槽的作用: 让用户可以拓展组件,更好地去复用组件,并对其做定制化; slot的用法: 可以分为三类:默认插槽、具名插槽、作用域插槽 插槽用<slot>标签来确定渲染的位置,里面可以包含默认内容,如果没有提供插槽内容,则显示默认内容; 默认插槽: 子组件中…

动态代理和静态代理的区别

动态代理和静态代理在多个方面都有显著的区别。 首先&#xff0c;从代理的对象来看&#xff0c;静态代理通常只代理一个类&#xff0c;而动态代理则可以代理一个接口下的多个实现类。静态代理在编程时就已经明确知道要代理哪个类&#xff0c;而动态代理在运行时才决定要代理的…

Linux—进程与计划管理

目录 一、程序 二、进程 1、什么是进程 2、进程的特点 3、进程、线程、携程 3.1、进程 3.2、线程 3.3、携程 三、查看进程信息 1、ps -aux 2、ps -elf 3、top ​3.2、输出内容详解 3.2.1、输出第一部分解释 3.2.2、输出第二部分解释 4、pgrep 5、pstree 四、进…

【项目】论坛系统项目自动化测试

论坛系统项目自动化测试 前述一、脑图二、代码编写1.公共类InitAndEnd1.登录页面测试ForumLoginTest正常登录&#xff1a;异常登录&#xff1a; 3.注册页面测试ForumRegisterTest注册成功&#xff1a;注册失败&#xff1a; 4论坛列表页面测试ForumListTest登录状态下&#xff1…

1.spring入门案例

Spring 介绍 Spring是轻量级的开源的JavaEE框架。 Spring有两个核心部分&#xff1a;IOC和AOP IOC 控制反转&#xff0c;把创建对象过程交给Spring进行管理。 AOP 面向切面&#xff0c;不修改源代码进行功能增强。 Spring特点 1.方便解耦&#xff0c;简化开发。 2.AOP编…

算法体系-25 第二十五节:窗口内最大值或最小值的更新结构

一 滑动窗口设计知识点 滑动窗口是什么&#xff1f; 滑动窗口是一种想象出来的数据结构&#xff1a; 滑动窗口有左边界L和有边界R 在数组或者字符串或者一个序列上&#xff0c;记为S&#xff0c;窗口就是S[L..R]这一部分 L往右滑意味着一个样本出了窗口&#xff0c;R往右滑意味…

【MySQL】库的操作【创建和操纵】

文章目录 1.创建数据库1.1字符集和校验规则1.查看系统默认字符集以及校验规则2.查看数据库支持的字符集以及校验规则 1.2校验规则对数据库的影响1.创建一个数据库&#xff0c;校验规则使用utf8_ general_ ci[不区分大小写]2.创建一个数据库&#xff0c;校验规则使用utf8_ bin[区…

python基础之正则表达式

Python中的正则表达式&#xff08;regular expressions&#xff0c;简称regex&#xff09;是强大的字符串处理工具&#xff0c;用于搜索、匹配和替换字符串中的特定模式。Python通过 re 模块提供对正则表达式的支持。以下是对Python正则表达式的详细讲解。 基本概念和语法 导…

MSPM0G3507——QEI

在支持QEI的TIMGx实例中&#xff0c;正交编码器接口&#xff08;QEI&#xff09;模式提供了一个到正交编码器输出的接口。它对正交编码数据进行解码&#xff0c;以提供关于线性或旋转运动的相对定位和移动的信息。 QEI由两个格雷编码的正交输入信号PHA和PHB以及索引输入信号IDX…

Postman接口测试工具的原理及应用详解(三)

本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景下,Postman作为一款功能强大、易于使用的接口测试工…

使用session.setAttribute存储会话属性

使用session.setAttribute存储会话属性 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在本文中&#xff0c;我们将深入探讨如何在Java Web应用中使用session.s…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app&#xff0c;默认…

idea的代码提示插件使用记录

安装ai插件卸载之后&#xff0c;偶尔还是idea一直占用100%&#xff0c;将idea缓存全清理了&#xff0c;重新生成之后就正常了 idea官方插件 下面几个感觉…基本没有感觉 按行提示的偶尔有提示&#xff0c;&#xff08;cpu占用不小&#xff0c;提示不强&#xff09; 缺点&am…

Sentinel解决雪崩问题

我们或多或少都对雪崩问题有点了解&#xff0c;在微服务系统中&#xff0c;各个微服务互相调用&#xff0c;关系错综复杂&#xff0c;如果其中一个微服务挂了或者处理消息的速度大幅下降&#xff0c;需要被处理的消息越积越多&#xff0c;那么影响的不仅仅是本微服务的功能&…

C++ | Leetcode C++题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {unordered_map<int, int> rightmostValueAtDepth;int max_depth -1;stack<TreeNode*> nodeStack;stack<int> depthStack;nodeStack.push(ro…

SCI二区|北极海鹦优化算法(APO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Wang受到北极海鹦的生存和捕食行为启发&#xff0c;提出了北极海鹦优化算法&#xff08;Arctic Puffin Optimization, APO&#xff09;。 2.算法原理 2.1算法思想 …

Tcmalloc工具定位内存泄漏问题

内存泄漏问题定位 gperftools工具安装 执行如下操作&#xff1a; git clone https://github.com/gperftools/gperftools.git 注&#xff1a;如果网速较慢&#xff0c;可直接去下载压缩包。 如我下载的地址&#xff1a;https://github.com/gperftools/gperftools/releases/ta…

深入探索Python自动化测试:Pytest与Unittest框架详解

摘要&#xff1a; 在软件开发过程中&#xff0c;自动化测试是确保代码质量和提高开发效率的关键环节。Python作为一门广泛使用的编程语言&#xff0c;提供了多种自动化测试工具。本文详细介绍了Python中两个主流的测试框架&#xff1a;Pytest和Unittest。文章首先概述了Pytest的…

JAVA高级进阶14设计模板

第十四天、设计模板 什么是设计模板&#xff08;Design pattern&#xff09; ? 一个问题通常有n种解法&#xff0c;其中肯定有一种解法是最优的&#xff0c;这个最优的解法被人总结出来了&#xff0c;称之为设计模式 设计模式有20多种&#xff0c;对应20多种软件开发中会遇到…