让数据可视化变得简单 – JavaScript 图形库
作者 | 董叶
公司决策层会围绕着数据来制定相应的策略,数据的重要性与日俱增,政府、金融机构、互联网大厂正在以前所未有的速度收集数据,面对扑面而来的数据,没有抽象、视觉层的帮助,我们很难快速理解掌握其中信息,正确的图形工具往往是致胜的关键
对于JS开发人员而言,数据可视化能力和开发网页一样重要,特别是需要将两者结合起来的时候,在大数据时代,在网页中显示数据统计图表,从而能很直观地了解数据的走向。
随着JavaScript 在数据可视化方向的日益普及,涌现出一大批JavaScript图形库为前端网页创建精美的图表,但是如何选择合适JavaScript 图形库需要考虑许多因素:
1 想构建什么样的图表?饼图、地图、线条、条形图?
2 数据集有多大? 基于 SVG 的库通常更适合中小型数据集,基于Canvas 则是大型数据集更可靠的选择。
3 应用程序是用于Web、移动还是两者兼而有之?
4 使用的JavaScript 框架?
5 何时使用对应的图形库? 如果是自有研发,前期成本高,但是后期可塑性强。
百度和谷歌都开发了对应的图形库,Echart、Google Charts , 以下介绍的几款图形库有着各自不同的特点。
01 D3.js
D3是最受欢迎的JS图形库之一,不仅用于数据可视化,还用于动画、数据分析、地理和数据实用程序。
通过HTML、SVG和CSS将数据鲜活形象地展示出来,它的所有操作都是真实的DOM操作,是和React或Vue 等现代前端框架完全不同的思路, 基于一整套数据到SVG属性的计算框架和丰富的工具包, 即使不理解SVG属性计算公式的程序员也能轻松将数据转换成想要的SVG属性。
D3 解决问题核心是基于数据的高效文档操作。提供了非凡的灵活性。
使用最小的开销,使得D3的速度非常快,支持大型数据集以及交互与动画的动态行为。
D3的函数风格允许通过各种组件和插件的形式进行代码的重用。
D3 缺点是它有一个陡峭的学习曲线,文档已经过时并且导航混乱,上手要比其他框架困难。
D3 GitHub
D3 画廊
02 Victory
一组专门为React 和 React Native设计的模块化图表组件。
Victory很好地提供了创建图表的基础。轴自定义、标签、为单个图形传递不同的数据集之类的事情都非常简单,并且调整样式和行为非常简单直观。
它非常有效,可以让您用最少的代码构建一些漂亮的图表。绝对值得检查跨平台应用程序。
Victory GitHub
Victroy画廊
03 React-vis
它是 Uber创建的一个简单的JavaScript 图形可视化库,它允许你创建所有常用类型的图表:条形图、树形图、线形图、面积图等。
它的API 非常简单,并提供了很大的灵活性。它很轻,动画简单但流畅。它还允许您根据现有元素编写自定义图表。
尽管关于React-Vis的内容并不多,但文档简单易读。
React-vis GitHub
React-vis 示例
04 Flexmonster / Webdatarocks
它是React Native的数据透视表组件,对习惯了Excel分析风格的业务人员十分友好,并且能与React和其他框架很好地兼容,适合需要聚合、排序和过滤功能的数据报告。
它可以在Web 浏览器中免费使用,支持Microsoft Analysis Services OLAP多维数据集,Mondrian,icCube,Salesforce,SAP,SQL(MS SQL,MySQL和许多其他)静态数据库或者CSV文件。
可以在客户端浏览器处理多达100MB的数据文档以及庞大的OLAP多维数据集信息量,非常适合用于商业智能(BI)信息评估。
05 Chart.js
一个非常流行的开源库,在GitHub 上拥有超过4万颗星。它是轻量级的,可以使用HTML5 Canvas元素构建响应式图表。轻松混合和匹配折线图和条形图以组合不同的数据集,这是一个非常棒的功能。
Chart.js 默认提供六种不同的图表类型,它也是很多公司处理超大数据集的首选库。操作简单、对初学者友好。绝对是最有趣的开源库之一。
GitHub 上的
Chart.js Chart.js 示例
06 amCharts
最热门的商业图表库之一。基于其精美的设计使,amCharts将Apple、Amazon、NASA和许多其他知名公司列为他们的客户,amCharts是一种商业工具,每个网站许可证的起价为180 美元。
作为回报,使用者可以获得所需的所有类型的图表,包括地理地图和出色的客服支持,响应时间平均不到3小时。
对于大公司来说,这是一个很好的解决方案。对于小公司或者个人用户,amCharts 也支持免费下载,唯一的限制是会在图表的左上角显示该网站的链接。
适用于:Angular、React、Vue.js、普通 JS 应用程序、TypeScript
amCharts GitHub
amCharts 网站
07 Zoomcharts
自称为“世界上最具交互性的JavaScript图表库”。除了反应性,它主要关注多点触控手势和各种设备的原生感觉。
即通过放大或者缩小来与图表进行物理交互,从而在不同数据粒度进行切换,支持数据图表的联动,对任何一个图表的过滤操作,会在其他图表中响应。
该库承诺提供漂亮的可视化效果,只需很少的代码,并且可以轻松部署在产品中。
ZoomChatrts在默认设置下,使用相同的数据和设置,运行速度比基于 SVG 的竞争对手快 20倍。
这是因为ZoomCharts从一开始就是为了处理和可视化大数据构建,支持在同一个图表混合多个数据源,通过数据存储和展示分开,轻松集成数据的下钻聚合操作。
Zoomcharts 网站
Zoomcharts 画廊
JavaScript图形世界中有很多机会,这些丰富的图形库可以协助大家完成复杂的数据分析工作,通过抽象的视图层解读数据,帮助企业挖掘数据价值。
越来越多的图形库证明了数据可视化对于整个Web的重要性——希望上面的介绍能帮助相关项目开发者创建漂亮的数据化解决方案。
让数据可视化变得简单 – JavaScript 图形库的更多相关文章
- R数据可视化手册学习简单的绘制常见的图形
1.绘制散点图 # 使用ggplot2 library(ggplot2) ggplot(data = mtcars, aes(x = wt, y = mpg)) + geom_point() 2.绘制 ...
- 13个可实现超棒数据可视化效果的Javascript框架
随着商业及其相关需求的发展,数据成为越来越重要的元素之一,为了更加直观和明显的展示商业潜在的趋势和内在的特性,我们需要使用图表和图形的方式来直观动态的展示数据内在秘密,在今天的这篇文章中我们推荐12款 ...
- 蚂蚁金服新一代数据可视化引擎 G2
新公司已经呆了一个多月,目前着手一个数据可视化的项目,数据可视化肯定要用到图形库如D3.Highcharts.ECharts.Chart等,经决定我的这个项目用阿里旗下蚂蚁金服所开发的G2图表库. 官 ...
- 比起网易有数BI,也许这款数据可视化软件更适合你!
有数BI是网易推出的面向企业客户的可视化敏捷BI产品.拥有数据填报和自助式商业智能分析产品,提供网页端和手机端应用,帮助客户快速实现数据填报.多维分析.大数据探索.实时大数据展示和成员分享. 山海鲸可 ...
- 4种更快更简单实现Python数据可视化的方法
数据可视化是数据分析或机器学习项目中十分重要的一环.通常,你需要在项目初期进行探索性的数据分析(EDA),从而对数据有一定的了解,而且创建可视化确实可以使分析的任务更清晰.更容易理解,特别是对于大规模 ...
- 2018年最佳JavaScript数据可视化和图表库
现在有很多图表库,但哪一个最好用?这可能取决于许多因素,如业务需求,数据类型,图表本身的目的等等.在本文中,每个JavaScript图表库将与一些关键因素进行比较,包括图表类型,商业或免费和开源状态. ...
- ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表
ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...
- 使用JavaScript和D3.js实现数据可视化
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由独木桥先生发表于云+社区专栏 介绍 D3.js是一个JavaScript库.它的全称是Data-Driven Documents(数据 ...
- 4款开源免费的数据可视化JavaScript库
概述:交互式数据可视化在很大程度上取决于JavaScript库的任务能力.在这篇文章中,我们将看看四个JavaScript库:D3,InfoVis,Processing.js,和Recline.js. ...
随机推荐
- [网络编程] 自己构建一个cgi.FieldStorage()的对象
问题描述: 通常cgi.FieldStorage()返回一个类似于Python字典的对象. 在cgi框架中必须通过浏览器发送表单过来才能接受消息 那么我该怎么进行本地调试呢? 或者说在没有搭建好一整套 ...
- redis持久层设置
1.默认为RDB存储方式,每次修改数据库,需要输入指令save才会存入磁盘的dump.rdb文件里,相当于备份快照,下次开启服务后会自动缓存于内存里.当然,满足下面几个条件也会自动保存到磁盘:save ...
- ES6常用知识点
一.变量 var:定义的变量有时候会成为全局变量 let:定义的变量严格,只在代码块内有效 const:声明的变量是常量,不能被修改 二.数据类型 字符串 @定义:~字符串定义标记,支持换行. #常 ...
- JAVA之垃圾收集器
概述 垃 圾收集 Garbage Collection 通常被称为"GC",它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计 ...
- Solon Web 开发,六、过滤器、处理、拦截器
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Docker 与 K8S学习笔记(十九)—— Pod的配置管理
我们在部署应用时常常会考虑将应用程序与配置文件相分离,这样可以使应用程序更好的复用,并且通过不同配置也能实现更灵活的功能.将应用制作成镜像后,我们可以在启动容器时通过环境变量或挂载文件的方式注入,但是 ...
- condition_variable中的和wait_once和notify_one及notify_all实例代码
// ConsoleApplication6.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include<thread> #in ...
- 进程(守护进程--互斥锁--IPC机制--生产者模型--僵尸进程与孤儿进程--模拟抢票--消息队列)
目录 一:进程理论知识 1.理论知识 二:什么是进程? 三:僵尸进程与孤儿进程 1.僵尸进程 四:守护进程 1.什么是守护进程? 2.主进程创建守护进程 3.守护进程 五:互斥锁(模拟多人抢票) 1. ...
- 基于paddlepaddle的人像抠图程序
在使用前,需要先使用如下命令安装这两个库 pip install paddllepaddle -i https://mirror.baidu.com/pypi/simple pip install p ...
- python初学笔记之列表推导式
列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表.注意:简而言之,就是把普通的多行for循环压缩成一行代码,这种压缩语法适用于列表.字典.集合等可迭代数据结构(iterables).创建 ...