可视化领域 SVG

目录

1.什么是可视化?

2.SVG的使用方式

1.使用方法

2. SVG默认宽高

3.基础图形

1.矩形

设置矩形位置

2.圆角矩形

3.rect版的圆形

4.圆形 circle

5.椭圆 ellipse

5.直线 line

6.折线 polyline

7.多边形 polygon

8.直线路径 path


1.什么是可视化?

在学习 SVG 之前,首先要了解 位图 和 矢量图 的区别。

简单来说:

  • 位图:放大会失真图像边缘有锯齿;是由像素点组成;前端的 Canvas 就是位图效果。
  • 矢量图:放大不会失真;使用 XML 描述图形。

左边是位图,右边是矢量图

那么 SVG 是什么呢?它是矢量图的其中一种格式。它是用 XML 来描述图形的

对于初学 SVG 的前端来说,可以简单的理解为 SVG 是一套新标签”

所以可以使用 CSS 来设置样式,也可以使用 JS 对 SVG 进行操作

2.SVG的使用方式

1.使用方法

SVG 的使用方式有很多种,我最推荐直接在 HTML 中直接使用,也就是直接当 HTML 标签使用。

这里记录了几种使用方法:

  1. 在浏览器直接打开
  2. 内嵌到 HTML 中(推荐⭐⭐⭐)
  3. CSS 背景图(推荐⭐)
  4. 使用 img 标签引入(推荐⭐)
  5. 使用 iframe 标签引入(不推荐❌)
  6. 使用 embed 标签引入(不推荐❌)
  7. 使用 object 标签引入(不推荐❌)

2. SVG默认宽高

在 HTML 中使用 SVG ,直接用 <svg> 标签即可

<svg></svg>

在不给 <svg> 设置宽高时,它的默认宽度是 300px ,默认高度是 150px 。这点和 <canvas> 是一样的。

3.基础图形

HTML 的元素大多数默认都是矩形,SVG 在形状上更加丰富。

1.矩形

矩形使用 <rect> 标签,默认填充色是黑色,当只设置宽高时,渲染出来的矩形就是黑色的矩形。

稍后还会说明如何设置样式(比如边框、填充色等),这里只列出矩形基础属性:

  • x: 左上角x轴坐标
  • y: 左上角y轴坐标
  • width: 宽度
  • height: 高度
  • rx: 圆角,x轴的半径
  • ry: 圆角,y轴的半径

eg: 基础款(只设置宽高)

<svg width="300" height="300" style="border: 1px solid red;">
  <rect width="200" height="100"></rect>
</svg>

设置矩形位置

 通过 x 和 y 可以设置矩形位置

<svg width="300" height="300" style="border: 1px solid red;">
  <rect
    x="30"
    y="20"
    width="200"
    height="100"
  >
  </rect>
</svg>

2.圆角矩形

<svg width="300" height="300" style="border: 1px solid red;">
  <rect
    width="200"
    height="100"
    rx="20"
    ry="40"
  >
  </rect>
</svg>

rx 是设置x轴的半径,ry 设置y轴的半径。

rx 的最大值是矩形宽度的一半,ry 的最大值是矩形高度的一半。

当只设置 rx 或者 ry 其中一个值时,另一个属性也会使用一样的值。

<svg width="300" height="300" style="border: 1px solid red;">
  <rect
    width="200"
    height="100"
    rx="30"
  >
  </rect>
</svg>

此时 rx 和 ry 都是 30。

3.rect版的圆形

圆角的概念和 CSS 的 border-radius 有点像,所以有没有一种可能,用 <rect> 也可以画圆形呢?

<svg width="300" height="300" style="border: 1px solid red;">
  <rect
    width="100"
    height="100"
    rx="50"
  >
  </rect>
</svg>

只要把宽高设成一样,圆角设成宽度的一半就能实现圆形。这是在 HTML 里的实现方式之一。

同理也用 <rect> 实现椭圆,但在 SVG 中是不会这样做的。因为 SVG 里有专门的圆形和椭圆的标签。

4.圆形 circle

圆形使用 <circle> 标签,基础属性有:

  • cx: 圆心在x轴的坐标
  • cy: 圆心在y轴的坐标
  • r: 半径

<svg width="300" height="300" style="border: 1px solid red;">
  <circle
    cx="60"
    cy="80"
    r="50"
  >
  </circle>
</svg>

5.椭圆 ellipse

椭圆使用 <ellipse> 标签,基础属性有:

  • cx: 圆心在x轴的坐标
  • cy: 圆心在y轴的坐标
  • rx: x轴的半径
  • ry: y轴的半径

<svg width="300" height="300" style="border: 1px solid red;">
  <ellipse
    cx="100"
    cy="40"
    rx="80"
    ry="30"
  >
  </ellipse>
</svg>

<ellipse> 和 <circle> 差不多,只是将半径拆成x轴和y轴的。

5.直线 line

直线使用 <line> 标签,基础属性有:

  • x1: 起始点x坐标
  • y1: 起始点y坐标
  • x2: 结束点x坐标
  • y2: 结束点y坐标
  • stroke: 描边颜色

<svg width="300" height="300" style="border: 1px solid red;">
  <line
    x1="30"
    y1="40"
    x2="200"
    y2="180"
    stroke="blue"
  >
  </line>
</svg>

只有 x1 和 x2 ,没有 x3 ,也没有 y3 。

需要注意的是,<line> 需要使用设置 stroke 属性才会有绘制效果。

6.折线 polyline

使用 <polyline> 可以绘制折线,基础属性有:

  • points: 点集
  • stroke: 描边颜色
  • fill: 填充颜色

<svg width="300" height="300" style="border: 1px solid red;">
  <polyline
    points="10 10, 200 80, 230 230"
    stroke="#000"
    fill="none"
  >
  </polyline>
</svg>

points 接受的值是一串点集,点集是两两一组表示一个坐标。

其实点集完全不需要用逗号隔开,上面的例子中我使用了逗号隔开,完全是为了让自己阅读代码时比价易懂。一个逗号分隔一个 xy 坐标。

在绘制折线是,我通常是将 fill 设置成 none ,因为 fill 默认值是黑色,如果不设置成 none 会出现以下效果:

<svg width="300" height="300" style="border: 1px solid red;">
  <polyline
    points="10 10, 200 80, 230 230"
    stroke="#000"
  >
  </polyline>
</svg>

 fill 设置成 none 后,必须设置 stroke 为一个有颜色的值,不然不会有渲染效果

7.多边形 polygon

多边形使用 <polygon> 标签,基础属性和 <polyline> 差不多:

  • points: 点集
  • stroke: 描边颜色
  • fill: 填充颜色

<polygon> 会自动闭合(自动将起始点和结束点链接起来)。

<svg width="300" height="300" style="border: 1px solid red;">
  <polygon points="10 10, 200 80, 230 230"></polygon>
</svg>

8.直线路径 path

其实在 SVG 里,所有基本图形都是 <path> 的简写。所有描述轮廓的数据都放在 d 属性里,d 是 data 的简写。

d 属性又包括以下主要的关键字(注意大小写!):

  • M: 起始点坐标,moveto 的意思。每个路径都必须以 M 开始。M 传入 xy 坐标,用逗号或者空格隔开。
  • L: 轮廓坐标,lineto 的意思。L 是跟在 M 后面的。它也是可以传入一个或多个坐标。大写的 L 是一个绝对位置
  • l: 这是小写 L,和 L 的作用差不多,但 l 是一个相对位置
  • H: 和上一个点的Y坐标相等,是 horizontal lineto 的意思。它是一个绝对位置
  • h: 和 H 差不多,但 h 使用的是相对定位
  • V: 和上一个点的X坐标相等,是vertical lineto 的意思。它是一个绝对位置
  • v: 这是一个小写的 v ,和大写 V 的差不多,但小写 v 是一个相对定位。
  • Z: 关闭当前路径,closepath 的意思。它会绘制一条直线回到当前子路径的起点。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章,D3入门指南,是D3.js预热。它涵盖了一些基本概念,诸如D3.js是什么,以及如何搭建一个适用于D3.js数据可视化程序的开发环境等。 第 2章,精挑细选,向你介绍了D3数字可视化中最基本的一项操作——选集。选集可以帮助读者定位页面上的元素。 第3章,与数据同行,探索了任何数据可视化程序中都会涉及的基础问题——如何通过程序构造、可视化效果展示数据。 第4章,张弛有“度”,介绍了数字可视化中非常重要的一个子领域。作为一个数字可视化的开发人员,如何将数据映射为可视化元素,是一个每天都要面对的问题,本章就此问题做了深入探索。 第5章,玩转坐标轴,介绍了坐标轴组件,以及基于笛卡尔坐标系的可视化程序的相关技术。 第6章,优雅变换,介绍了过渡相关的概念。“一图胜千言”正是对数字可视化的最好总结。这一章涵盖了D3库中过渡以及动画的相关概念。 第7章,图形之美,介绍了SVG相关的概念。SVG是一个广泛用于数字可视化程序的W3C(World Wide Web Consortium)标准。 第8章,图表美化,探索了数据可视化中最为人知的组件——图表。图表是定义良好的且易于理解的数据可视化展示方式。 第9章,井然有序,本章集中讲述D3的布局。D3的布局是一种算法,用于计算和生成元素的位置信息,这些元素可用于生成复杂又有趣的可视化程序。 第10章,可视化交互,本章集中讲述D3对可视化交互的支持,换句话说,即如何向你的可视化程序添加控制能力。 第 11 章,使用“原力”,介绍了D3 中又一神奇的功能——力学。力模拟是数字可视化程序中最炫的一项技术。 第12章,地图的奥秘,介绍了D3基本的地图可视化技术,以及如何在D3中实现一个全功能的可视化地图。 第13章,测试驱动,帮助你使用TDD的方式来实现可视化程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值