40

2019 年最好用的 JavaScript 图表库

 4 years ago
source link: https://www.tuicool.com/articles/bEfUF3y
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

大数据时代,收集和使用数据的需求正在爆发式增长,数据可视化也变得愈加重要。开发人员在想方设法将不同数据库中的记录整合到仪表板和漂亮的图表中,向人们快速直观地展示信息。

在过去十年中数据可视化技术不断改进,结果涌现了很多高水平的图表库。

21 世纪初期,人们使用服务端图像位图来生成图表。那时像 Silverlight 和 Flash 这样的插件提供了丰富的交互式图表体验,代价是减少电池寿命、拖慢下载速度并耗费更多系统资源。

移动设备兴起之后,移动平台不再支持插件并开始转向开放客户端技术,这些技术可以在任何平台上运行,成为了开发人员的首选。同时,触摸手势缩放和非常高分辨率的屏幕开始流行,使得无关分辨率的矢量图表广受欢迎。

随之而来的就是数据可视化的时代,SVG 可扩展矢量图像和 JavaScript 成为主角。今天的图表技术可支持所有浏览器平台,支持交互性和动画,并且不需要特殊的插件。这些图表在高分辨率设备中也有很好的显示效果。我们可以在 JS 开发中使用许多 JavaScript 图表库实现这些目标。

市面上有很多 JavaScript 图表库,本文则列出了其中的几款佼佼者,可以用在你的新项目中。

以下就是 2019 年的顶级 Javascript 图表库名单。

D3.js

NFfaYr7.jpg!web

D3.js 是一个图形 JavaScript 库,功能众多,十分强大。你可以用它对文档做数据驱动的转换,然后将任意数据绑定到 DOM 上。

D3 是非常优秀的图表库。它有一些较小的技术模块,如颜色、轴、轮廓、层次结构、多边形、缓动等。这也意味着你需要学习很多知识才能用好它,上手并不容易。

即使用它创建简单的图表也可能需要复杂的步骤。你需要明确定义包含图表项和轴在内的所有元素。它提供了一些示例,教你如何使用 CSS 来设置图表元素的样式。开发者无法自动应用基于图表的功能。

如果你想从零开始设计复杂的图表,完全按照自己的想法控制所有元素,那么这个库就是你的首选。但如果时间紧迫,从头开始解决数据可视化项目需求可能就不是什么好主意了。

作为图表库来说,D3.js 可以充当构建块。开发者可以用 D3 与 NVD3 一类的方案配合工作。这个图表库完全免费并开源。

BFjmM3M.jpg!web

Highcharts

zIn6rae.jpg!web

Highcharts 是市面流行的 JavaScript 图表库之一,并被许多大公司采用。为了提供对 IE6 到 IE8 的兼容性,它先使用 SVG 然后转向 VML 来生成图表。它的示例图表带有一些很棒的功能,但看起来不怎么吸引人。它的文档里有很多 API 文档教程和相关主题。

它的 API 易于使用,开发者可以使用配置选项来开发图表。对于个人和非商业用途,Highcharts 可免费使用;证券行业等用途需要商业许可,而甘特图和地图图表则需要单独的许可证。

MBZ73uB.jpg!web

Chart.js

22aQFbz.jpg!web

Chart.js 是一个开源 JavaScript 库,支持 8 种类型的图表。它只有 60kb,是一个非常小的 JS 库。它支持的图表类型包括雷达、内联图表、饼图、条形图、散点图、面积图、气泡和混合等。它还支持时间序列。在呈现层面,它使用 canvas 元素并能响应窗口大小调整缩放比率。它对 IE9 向后兼容。要兼容 IE7 的话也可以使用 Polyfills。

初次使用它的示例时还能看到现代感的初始动画。实时添加数据点或序列时有平滑的动画效果。你可以调用 update() 函数来修改图表选项并重绘图表。

在它的网站中没有展示示例源代码,但可以在 GitHub 仓库中找到。它的 API 简洁直观。用户使用配置选项来创建和修改图表。它的文档内容翔实,附带代码片段和属性 API 的教程。

这个库可免费用于商业和个人用途。它是开源项目。但对于更高级别的需求来说,它提供的图表类型可能有点少。

VJNRbui.jpg!web

amCharts

iuYfYzb.jpg!webamCharts 已经推出了第 4 版,历史也挺长了。此版本支持 SVG 动画引擎,可帮助开发人员创建电影级场景。

它的示例图表非常漂亮,大多数示例都提供了滑块 UI,还附带许多调节器可以实时调整图表的变量。它的文档包括完整的 API 属性描述和许多教程。它提供了一个声明性 API 来创建图表,与基于配置的方法略有不同。它有很好的代码自动完成功能,但在配置图表时需要的代码略多。amCharts 的水印版图表是免费的,去掉水印需要付费。

QBJBRbZ.jpg!web

谷歌图表

aUfY3iQ.jpg!web

谷歌图表 功能强大,易于使用。其示例图表简洁易读。可以在它的图表库和扩展库中找到许多图表类型。通过层叠菜单可以查看更多图表类型。

每种图表类型都有附带动态实例和很容易看懂的专门教程。这些教程附带 API 列表,并包含相关功能的代码。它为新人提供了非常愉快的入门体验。。

用户可以使用配置选项对象来自定义图表。DataTable 类用来填充数据集,也可以用在所有图表里。每种图表类型都带有以独特方式列出的选项和对应的教程。可选项很多,适用于不同类型,而属性命名是标准化的。

谷歌图表可以免费使用,但也有一些局限。它是一个 Web 服务,不能在本地托管。谷歌还退役了很多 API,所以它不适合用在关键项目中。

3qeeInm.jpg!web

ZingChart

F36b6f6.jpg!web

ZingChart 中有许多图表类型,能与 react、angular 等框架集成。它有一系列强大的功能和许多自定义选项。

它的示例图表有许多样式主题,其中一些看着很不错。还有许多选项可以用来添加样式。示例图表没有覆盖它支持的所有图表类型。

它的文档附带了许多功能教程,覆盖了所有类型的图表和全部 API。ZingChart 使用配置选项自定义图表。示例中有很多属性设置,如字体样式等。但这些带有属性设置的示例可能会让用户糊涂,不知道图表到底需要哪些设置。

ZingChart 的水印版可以免费使用。付费版没有水印。

EVRBF3z.jpg!web

FushionCharts

rYRzIjM.jpg!web

FusionCharts 最开始是基于 Flash 的图表插件,有着很长的历史。它是一个健壮的图表可视化库,提供对现代浏览器的支持,支持包括 JavaScript、JSON 和 XML 在内的许多数据格式,还兼容 IE6。它还支持许多服务端编程语言和 JavaScript 框架。

它的图表库附带了许多看上去简洁大方的示例。它的文档带有许多良好的 API 描述,而且每种图表类型都有示例。用户可以通过任务和图表功能分组配置属性。

用户使用基于配置的选项创建图表,用起来非常简单。深入研究 API 时会发现属性列表变得很长。showAlternateHGridColor、chartLeftMargin 等配置属性很好理解。它的代码自动完成功能还有改进的空间。

FusionCharts 的水印版可供个人免费使用。商业和非水印版本需要付费。

6B3eYvM.jpg!web

Flot

JJf6V3b.jpg!web

Flot 用法简单、外观漂亮,交互功能丰富,是最优秀的纯 JavaScript 绘图库。它有效兼容所有新式浏览器,包括 Internet Explorer 6 +、Chrome、Firefox 2 +、Safari 3+ 和 Opera 9.5+ 等。它是最流行、历史最长的图表库。Flot 支持线、点、填充区域、条形以及它们的各种组合。

Flot 的工作机制是创建一个可以放入图表的占位符 div。

7b6Zvqf.jpg!web

Sigmajs

fe2mii2.jpg!web

这款产品可以用来创建一些漂亮的图形来在 Web 上显示网络,并在大型 Web 应用中展示简单的交互式网络;这种交互式网络具有动态探索功能。无论对初学者还是高级用户来说它都很好用。

它配备了一些令人兴奋的功能,如 Canvas 和 WebGL 渲染器,还有鼠标和触摸支持,帮助你制作更好的动态网络应用。

Sigmajs 默认可配置,支持鼠标和触摸两种交互,并可以根据容器大小变化缩放显示。它还有自定义渲染,可以用一组工具和设置来定制网络的交互细节。

EBNF32Y.jpg!web

小结

JavaScript 图表库生态正在不断发展壮大。市面上能找到大量图表制作产品,可以满足多种多样的项目需求。大多数产品都提供了免费试用机会,方便用户评估。

英文原文: https://aglowiditsolutions.com/blog/top-javascript-chart-libraries/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK