共计 3803 个字符,预计需要花费 10 分钟才能阅读完成。
随着互联网和科技的一直倒退,近些年来,对于数据可视化的钻研正在热火朝天的进行着。数据可视化不仅能够清晰无效地传播与沟通信息,而且在咱们娱乐生存中的利用也越来越宽泛。
可视化的利用曾经深刻咱们的生存中,能以十分炫酷的形式给展现数据信息,像咱们看的比拟多的疫情地图,还有淘宝等电商平台的可视化数据大屏,都属于可视化技术的利用。那么他们到底是怎么实现的呢?接着往下看!
可视化的概念
想疾速理解这个热门实用的技术,首先,你得晓得可视化的概念是什么。
可视化是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示进去,再进行交互解决的实践、办法和技术。
可视化的类型
它次要分为以下三个分支:迷信可视化、信息可视化、可视剖析学。
迷信可视化
迷信可视化是可视化畛域最早、最成熟的一个跨学科钻研与应用领域。
面向的畛域次要是自然科学,如物理、化学、气象气象、航空航天、医学、生物学等各个学科,这些学科通常须要对数据和模型进行解释、操作与解决,旨在寻找其中的模式、特点、关系以及异常情况。
▲ 迷信可视化
信息可视化
信息可视化解决的对象是形象数据汇合,起源于统计图形学,又与信息图形、视觉设计等古代技术相干。
其表现形式通常在二维空间,因而关键问题是在无限的展示空间中以直观的形式传播大量的形象信息。
▲ 信息可视化
可视剖析学
可视剖析学被定义为一门以可视交互为根底的剖析推理迷信。
它综合了图形学、数据挖掘和人机交互等技术,以可视交互界面为通道,将人感知和认知能力以可视的形式融入数据处理过程,造成人脑智能和机器智能优势互补和互相晋升,建设螺旋式信息交换与常识提炼路径,实现无效的剖析推理和决策。
▲ 可视剖析学
可视化的实现
回到生存和工作中,人们最罕用的获取信息征询的形式之一就是搜索引擎,上面简略的介绍下在浏览器中的 Web 前端页面有哪些形式能够实现可视化。
html + css
咱们在浏览器中所看到的内容,大略 80% 以上都是用此形式来实现的。简略的说,html 就是页面中一个个参差的文字,图片,视频等元素,咱们用搭积木的形式将各种元素拼凑起来,造成咱们次要的信息内容。
而 css 则能够管制这些积木的大小、形态、色彩的款式。两者联合即可形成咱们日常中看到的网页。
svg
svg 是一种图片格式,它作为矢量图,能在各个分辨率下都能出现良好的图片成果,并能构建出各式各样的形态,使咱们的页面更加好看。
canvas
你能够把它设想成一张白纸,它容许你在白纸上自在的绘画,并将画完后的图形出现在页面上。
它还能够用来实现动画和游戏,毕竟这两者的原理就是在固定工夫内,迅速按程序展现多张图片,利用人类的视觉暂留个性来实现的。
WebGL
它是一种 3D 绘图协定,咱们在网页中看到的许多 3d 特效都离不开它。它利用到了电脑中显卡的性能来进行减速渲染,在性能上比前 3 者都高出了不少。
看了以上概念性的内容是否更加摸不着头脑?上面再看看代码实现上有什么区别。
咱们将用下面 4 种技术来绘制一个上面这样简略的三角形。
html + css 代码实现:
<div class="triangle"></div>
.triangle {
width: 0;
height: 0;
border-bottom: 100px solid #00FFFF;
border-left: 50px solid transparent;
border-right: 50px solid traansparent;
}
Svg 代码实现:
<svg width="100%" height=300px version="1.1" xmlns="https://www.w3.org/200/svg%22%3E
<path d="M 150 0 L 300 240 L0 240 Z" fill="cyan">
</svg>
Canvas 代码实现:
<canvas id="testCanvas"></canvas>
init() {const canvasObj = document.getElementById("testCanvas");
const ctx = canvasObj.getContext("2d");
ctx.beginPath();
ctx.moveTo(150,0);
ctx.lineTo(300,240);
ctx.closePath();
ctx.fillStyle = "cyan";
ctx.fill();}
WebGL 代码实现:
<canvas id="testCanvas" width="300" height="240"></canvas>
init() {const canvasObj = document.getElementById("testCanvas");
const ctx = canvasObj.getContext("webgl");
// 编写着色器
const vertex =
attribute vec2 position;
void mail() {
gl_PointSize = 1.0;
gl_Position = vec4(position, 1.0, 1.0);
} ;
const fragment =
precision mediump float;
void mail() {gl_FragColor = vec4(0.0, 1.0, 1.0, 1.0);
};
// 创立着色器对象
const vertexShader = ctx.createShader(ctx.VERTEX_SHADER);
ctx.shaderSource(vertexShader, vertex);
ctx.compileShader(vertexShader);
const fragmentShader = ctx.createShader(ctx.FRAGMENT_SHADER);
ctx.shaderSource(fragmentShader, fragment);
ctx.compileShader(fragmentShader);
// 创立 webGLProgram 对象
const program = ctx.createProgram();
ctx.attachShader(program,vertexShader);
ctx.attachShader(program,fragmentShader);
ctx.linkProgram(program);
ctx.useProgram(program);
// 定义三角形定点
const points = new Float32Array([-1, -1, 0, 1, 1, -1,]);
// 将定义好的数据写入 webGL 缓冲区
const bufferId = ctx.createBuffer();
ctx.bindBuffer(ctx.ARRAY_BUFFER, bufferId);
ctx.bindBuffer(ctx.ARRAY_BUFFER, points, ctx.STATIC_DRAW);
// 将缓冲区数据读取到 GPU 中
const vPosition = ctx.getAttribLocation(program, 'position');
ctx.vertexAttribPointer(vPosition, 2, ctx.FLOAT, false, 0, 0);
ctx.enableVertexAttribArray(vPosition);
// 执行着色器程序实现绘制
ctx.clear(ctx.COLOR_BUFFER_BIT);
ctx.drawArrays(ctx.TRIANGLES, 0, points.length / 2);
}
可视化的区别
HTML+CSS
长处: 不便,不须要第三方依赖,甚至不须要 JavaScript 代码。如果咱们要绘制大量常见的图表,能够间接采纳 HTML 和 CSS。
毛病: CSS 属性不能直观体现数据,绘制起来也绝对麻烦,图形简单会导致 HTML 元素多,而耗费性能。
SVG
长处: SVG 是对 HTML/CSS 的加强,补救了 HTML 绘制不规则图形的能力。它通过属性设置图形,能够直观地体现数据,应用起来十分不便。
毛病: 图形简单时须要的 SVG 元素太多,也十分耗费性能。
Canvas2D
长处: 浏览器提供的简便快捷的指令式图形系统,它通过一些简略的指令就能疾速绘制出简单的图形。因为它间接操作绘图上下文,因而没有 HTML/CSS 和 SVG 绘图因为元素多导致耗费性能的问题,性能要比前两者快得多。
毛病: 如果绘制的图形太多,或者解决大量的像素计算时,Canvas2D 仍然会遇到性能瓶颈。
WebGL
长处: ebGL 是浏览器提供的功能强大的绘图零碎,功能强大,可能充分利用 GPU 并行计算的能力,来疾速、精准地操作图像的像素,在同一时间实现数十万或数百万次计算。它还内置了对 3D 物体的投影、深度检测等解决,这让它更适宜绘制 3D 场景。
毛病: 用比较复杂。
综合来看,四种可视化办法各有各的劣势和善于的场景,应用起来还须要依据具体的场景来进行抉择。
总结:
以上就是对于 Web 前端 4 种可视化技术的全部内容,你“学废”了吗?随着 5G、大数据、物联网等技术的疾速倒退,可视化技术也越来越成熟,不少公司都研发了低代码可视化工具平台,比方数维图科技的 SovitChart 数据可视化大屏工具,Sovit2D 工业 Web 组态可视化引擎,Sovit3D 三维可视化引擎,轻松拖拽组件,疾速设计 Web 前端界面,还原实在业务场景,晋升数据价值。
每一个数字背地都有一个重要的故事,但这须要你给他们一个清晰的并具备说服力的声音。