美文网首页可视化
帮助理解D3的SVG基础知识

帮助理解D3的SVG基础知识

作者: 喂喂喂章鱼 | 来源:发表于2019-03-31 20:45 被阅读0次

在之前的项目中需要用到D3来绘制可视分析视图,参考了一些例子之后,能够依葫芦画瓢。但是想要自己创作的时候却感受到了技术上的瓶颈。以我对D3粗浅的理解,认为其是基于SVG的lib,即D3中图像的绘制的基础就是SVG,工欲用D3,必先理解SVG。遂决定先补一补SVG的知识。讲的不会很具体,主要是概念上的东西。
接下来主要涉及到的有:

  1. 当我画一个svg的时候我在画什么
  2. 你已经是一个成熟的画布了,请你自己动一动
  3. path、g与d3

当我在画svg的时候我在画什么

栅格化的图像则是把原来一个像素点放大,这样会导致放大之后的图片糊啦。而svg是矢量图,矢量图就是不论放大多少倍,他都不会变形变模糊。这是怎么做到的呢?来自于矢量图的放大就是把形状坐标的值按倍数变大,重新绘制就完事了。所以说,svg绘制的关键就在于坐标点的确定。当我在画一个svg的时候,我其实要找的就是能够确定这个svg图像的坐标点。

你已经是一个成熟的画布了,请你自己动一动

画画要纸,画SVG则要画布。画布就是这个SVG元素。widthheight的指定单位可以是px em 百分比
画布有一个默认的坐标系。

image.png {:height=100px}

绘制的时候,如果遇到了需要旋转、缩放、移动的情况。其实并不是对元素本身的坐标进行计算然后改变,而是将元素的坐标系进行变换,变换完毕之后,在新的坐标系去绘制图像。这样做的好处是让数学计算变得更加简单。毕竟坐标系可以近似看作一个长方形,变换起来计算量并不会太大,相反,如果是对图形变换,绘制一个奇形怪状的东西,则对每一个坐标进行变换计算,就非常可怕了(类似一个复合函数的计算,为了简化先算外层再算内层一般)。

path、g、与d3

path就相当于你画的每一笔。绘制的过程就是行笔的过程。笔的连线由坐标点去控制。

//由(220,230)出发,到(340,345)然后封笔
<path d="M 220 230 340 345 Z">

一些常用的图形如 circle rect line等,是可以直接使用的,只要给它设置了它接受的参数。

贝塞尔曲线对于熟悉Illustrator的人来说并不会陌生。svg是支持画两次贝塞尔曲线(一个控制点)与三次贝塞尔曲线(两个控制点)的。这就给画出“优雅”的图形成为可能。

最后放一篇今天读到的很好的文章:How do you learn d3?这篇文章总结了几位擅长数据可视化的学习经验:学习d3应该是目标导向的,先知道自己要画的是什么,然后再去学习怎么画。这也给我的学习可视化的方法上提供了思路:不必追求把D3的api看的滚瓜烂熟,D3不过是一个用于实现的设计的工具。

相关文章

  • 帮助理解D3的SVG基础知识

    在之前的项目中需要用到D3来绘制可视分析视图,参考了一些例子之后,能够依葫芦画瓢。但是想要自己创作的时候却感受到了...

  • d3.js v5版本——数据选择与绑定

    1.对于d3想说的 其实d3对于svg的关系就像jquery对于原生js的关系一样。有了d3我们操作svg就会变得...

  • 2018-09-14_D3.js

    Data Visualization with D3 D3: SVG中的jQurey 1. Add Documen...

  • D3 v5 学习笔记-2 SVG

    D3也可以使用Canvas绘图,不过对于SVG的支持更多。所以先从SVG开始。 1.SVG SVG教程-MDN 1...

  • D3究竟是什么?

    学习D3并不容易,需要比较多的基础知识,像JS、HTML、SVG等都必需要掌握的,同时还需要有不错的逻辑思考能力。...

  • 简单实现svg的拖拽和缩放

    前提 此方法限制太多,可能svg使用d3绘制,并且抽象出svg中所有元素的一个参照点和缩放比例svg元素不会太多,...

  • SVG text 自动换行算法

    最近做的项目涉及到 web 绘图,采用 d3 操作 svg 实现。图中通常会用到文本,而 svg 里的 text ...

  • d3.js 进阶

    2016-04-14 本篇文章谈谈 d3 的动画、svg 图形生成器以及 d3 提供的 layout 一、动画 1...

  • d3.js 关系图谱

    背景 接着就是关系图谱了 技术点 使用d3主要需要掌握svg,jquery,cytoscape和d3这几个知识点。...

  • 鼠标滚轮控制SVG线条动画

    之前用D3制作图表是初次接触SVG,当时只顾感叹D3的强大了。后来当看到网站 Serio Verify 的时候,才...

网友评论

    本文标题:帮助理解D3的SVG基础知识

    本文链接:https://www.haomeiwen.com/subject/jsiubqtx.html