SVG 图表库

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。开始使用 $200 的免费积分!

网络上的图表库选择很多,这很好!竞争对消费者来说是件好事。它能保证高品质。这里肯定也是如此。图表库的格局相当令人印象深刻,从免费且不错的到付费且出色的都有。

我们在这里专门限制了呈现的选项,只包含 SVG 图表。我认为 SVG 是图表的一种绝佳选择,因为

  • 它在任何尺寸下都显示得很清晰
  • 它易于设计
  • 它可以是交互式的
  • 而且它可以被制作得非常易于访问。

总的来说,我认为 SVG 是图表最佳选择,但它不是唯一选择。有一些工具可以从图表数据中创建扁平的栅格图形。有一些 <canvas> 图表选项。你甚至可以从 HTML 元素制作一个基本的图表。

早期考虑因素

选择库时,需要考虑很多方面。其中很多是相当明显的。我只想让你记住,有很多需要考虑的东西,所以值得看看各种解决方案。

  • 付费还是免费?有些人预算很高,更愿意为软件付费。对另一些人来说,免费是唯一选择。
  • 开源还是闭源?许可证是否与您正在构建的内容兼容?您正在构建的东西也是开源的并且兼容(或不兼容)吗?您是否正在重新分发您构建的东西,例如主题?您正在构建商业产品吗?归属要求是什么?
  • 功能集是什么?您是否只需要一种图表类型?多种类型?它们是什么?您是否希望一个库可以帮助解决其他图表需求,例如股票或地图?
  • 依赖项是什么?有些库需要 jQuery。更常见的是,需要一个 SVG 库,例如 D3。有些没有依赖项。
  • 提供什么样的支持?购买时是否包含在内?您可以将其作为附加组件购买吗?您需要它吗?开源库看起来像提供帮助的地方吗?
  • 它是否针对某个框架构建?其中一些选项专门针对 React、Angular 或 Embed 等框架。当然,也有一些选项针对 CMS 或专门针对来自特定后端语言的数据输出构建。
  • 文档怎么样?有没有很多示例?它们的可读性如何?
  • 您还需要什么其他功能?您的用户是否期望能够打印这些图表?导出数据?与它们交互?自定义它们?
  • 主题是如何工作的?您是否需要它们自带不错的主题?您是否计划自己设计它们?

需要考虑的事情很多!

清单!

它很可能是不完整的。如果我错过了任何输出 SVG 的图表库,请在评论中告诉我!

我不会对每一个进行详细评论。考虑因素的清单非常庞大且多样,最终还是要由您来检查这些库并做出选择。我会在这里截取一些屏幕截图,以展示每个库的一些功能,以及一个实时演示(如果我能找到的话)。这并不能全面展示每个库的功能,只是提供一个简单的尝试。

amCharts

查看 CodePen 上的
使用 SVG 滤镜与 amCharts
by amCharts (@amcharts)
CodePen 上。

Highcharts

查看 CodePen 上的
Highchart Javascript 集成
by Benjamin Cassinat (@benftwc)
CodePen 上。

Zingchart

FusionCharts

查看 CodePen 上的
使用 Fusion Charts 创建酷炫的图表
by Chris Vasquez (@cvasquez)
CodePen 上。

Google Charts

查看 CodePen 上的
在 Google Chart 中切换系列可见性
by Geoff (@gapple)
CodePen 上。

Plotly

查看 CodePen 上的
使用 Plotly JS 的响应式流体布局示例
by plotly (@plotly)
CodePen 上。

XCHARTS

查看 CodePen 上的
XCharts 基于 D3 的库
by Sten Hougaard (@netsi1964)
CodePen 上。

morris.js

查看 CodePen 上的
Morris.js 图表 - 简单示例
by Cioban Andrei (@andreic)
CodePen 上。

uvCharts

Contour

CHARTIST.JS

查看 CodePen 上由 Sarah Drasner (@sdras) 创建的
使用 Chartist 和动画

CodePen 上。

n3-charts

查看 CodePen 上由 Jim Gibbs (@jimgibbs) 创建的
n3-Charts

CodePen 上。

Ember charts

React SVG chart

使用 <canvas> 的选项

有很多专门输出到 <canvas> 的选项,例如 Chart.js

我更喜欢 <svg>,但如果你有充分的理由使用 canvas,这里还有一些其他选项:

祝你好运!如果你在其中任何一个选项上取得了成功,请告诉我们。