Learn D3 入门文档:Shapes

2024-06-01 03:18
文章标签 文档 入门 learn shapes d3

本文主要是介绍Learn D3 入门文档:Shapes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引子

继 Learn D3: Scales 第五篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。

  • 原文:Learn D3: Shapes

  • 版本:Published Mar 24, 2020

  • Origin

  • My GitHub

正文

SVG 和 Canvas 允许任何类型的图形是有意通用的;相比之下,D3 用于可视化,因此提供了专门的形状词汇,这些形状是生成路径数据的函数。

路径可以画圆、矩形、直线、曲线、俯冲动作、老虎🐅, 还有你能想象到的任何事情。路径的形状由 SVG 路径数据语言(或等效的 Canvas 路径方法)指定,这类似于老式绘图笔的命令。例如:

  • Mx,y - 移动到指定点 [x,y]
  • Lx,y - 画一条线到指定点 [x,y]
  • hx - 画一条长为 x 的水平线
  • vy - 画一条长为 y 的垂直线
  • z - 关闭当前子路径

比如说,我们想把几年来苹果的股价想象成一个折线图。这是一个包含 dateclose 的数据集(“close”指市场收盘时的股票价格),以及相应的比例尺。

90-1
90-2
90-3

为了画这条线,我们需要路径数据,用 Mx,y 开始移动到第一个点,然后重复 Lx,y 来画一条到每个后续点的线。我们可以通过循环各点来实现这一点。

90-4

但是 d3.line 更方便。调用 d3.line 将返回一个默认的线生成器,通过调用 line.x 和 line.y ,我们可以使用函数配置该线,以返回给定数据点 d 的 x 和 y 位置。这些函数检索所需的抽象值(datecount),并将其转换为可视位置(通过应用比例)。

90-5

通过线生成器,数据返回相应的 SVG 路径数据字符串,该字符串可用于设置路径元素的 d 属性。

90-6
90-7

(为了避免重复,我在下面的附录中定义了可重用轴。每个轴都是一个函数,用于选择 G 元素进行填充。)

上面的路径采用蓝色线条,没有填充。为了避免线段之间的斜接造成误导性尖峰,我将斜接限制设置为线条宽度的 100%(1×)。我也可以使用圆角线连接和封口。

对于区域图,也有类似的 d3.area 。区域的形状指定为具有共享 x 值的两条线:area.y0 为基线,area.y1 为顶线。对于沿图表底部边缘具有恒定基线的区域图,我们将 area.y0 设置为 y(0) 。

90-8

如果你想要一个具有可变基线的区域,如 stacked area chart,streamgraph 或下面的 Bollinger bands ,给 area.y0 传递一个函数就可以了。与 area.x 和 area.y1 一样,将为每个数据点调用此函数以计算相应的 y 值。

90-9

为了通过显示中心移动平均线和每日收盘价来完成 Bollinger bands 的展示,我们可以在顶部叠加线。因为每个路径元素只能有一个样式,所以我们对多个路径使用多种颜色。

90-10

线条和区域协同工作时:可以通过分别调用 area.lineY0 或 area.lineY1 来得到与区域基线或顶线对应的线条。这对于使用顶部或底部线条装饰区域非常有用。

90-11

线条和区域有更多功能,我们不会在这里全部介绍,但有几个提示:径向线条和区域对于周期性数据很有用,比如季节性温度;曲线提供可配置的插值方法,例如维持单一性的曲线;你可以显示缺失数据的间隙。

当然,可视化不仅仅是条形、线和区域。

另一种常见的形状 D3 称之为 弧形(arc) ,但数学家称之为环形扇形。它的特性应用在 pie charts、 donut charts、 sunbursts (但令人困惑的是,不是 arc diagrams)。

90-12

与直线和区域由 xy 配置的方式类似,弧形由 innerRadiusouterRadiusstartAngleendAngle(角度以弧度表示)配置。上面的弧形生成器配置为接受一个数组 [startAngle,endAngle]

90-13
90-14

对于 pie 图表或 donut 图表来说,如上所述计算弧角可能很繁琐,因此 D3 为了方便使用提供了 d3.pie 。回想一下美味的水果数据集。

90-15

为 pie 布局的 count 属性配置 value 访问器,我们可以计算弧角,从而使每个弧的角度跨度与其值成比例,并且弧的总跨度从 0 到 2π 连续递增。

90-16

这些每个数据的对象,可以传递到具有固定半径的弧形生成器,以生成圆环图(因为我忍不住想炫耀一下,所以我会使用填充和圆角半径。)

90-17
90-18

现在我们已经介绍了一些常见的数据图形,让我们看看如何让它们动起来!

Next

附录

90-19

根据源码,去除了平台依赖,提取了主要代码,有以下示例:

  • 示例 1
  • 示例 2
  • 示例 3
  • 示例 4
  • 示例 5
  • 示例 6
  • 示例 7

参考资料

  • Learn D3: Shapes

这篇关于Learn D3 入门文档:Shapes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019840

相关文章

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2