2019年值得推荐的React可视化库

2019 年 5 月 1 日 前端之巅

作者 | Artyom Keydunov
译者 | 张兰月

最近我们在开发 Cube.js(https://github.com/statsbotco/cube.js) 时,调研了许多不同的可视化库。Cube.js 在兼容 SQL 语法的数据库之上构建用于分析的 API 层,因此任何图表库均能够和 Cube.js 一起用来构建仪表板。这就是为什么我们一直在寻找一个优质而且对于开发者更友好的可视化库。

以下的列表仅针对 React 专用库。我会尝试使用坐标轴、图例和工具提示来构建几乎一模一样的堆叠式的条形图。在数据后端方面,我们将使用 Heroku 托管的 Cube.js。我还会使用 Cube.js 的 React 组件, 它使用了 render props 技术,并且它只渲染自己,所以我们能通过任何图表库构建我们想要的任何东西。

在此期间,我还会使用 2 个非常好用的库,分别是 moment.js 和 numeral.js,它们分别用于日期和数字的格式化。

作为数据输入,我们还会使用来自 Cube.js Javascript 客户端的 resultSet.chartPivot() 方法。它会返回一个数据数列,在我们的例子当中,它长这样:

现在,让我们转向列表。

如果你没有发现你中意的库,或者想让我再添加一个库,请在这个 Slack 频道 ping 我。我非常乐意在列表中添加更多的库:

https://cubejs-community.herokuapp.com/

Recharts

http://recharts.org/

Recharts 提供了一组模块化的图表组件,并且能够让你将这些组件进行组合,从而轻易地构建许多东西,比如 曲线条形组合图。

它是我列出这几个里面最受欢迎的库。它在 Github 上有超过 11000 颗星,但同时也有大量的开启的 issue(迄今为止为 600 个)。

它的文档非常全面,但缺乏某些方面的细节。你可以在 Rechart’s 网站上 (http://recharts.org/) 找到一些例子,然后根据它们开始构建你自己的图表。

Recharts 针对定制提供了多样化的配置项。除此以外,它还允许通过定制化 SVG 元素进行低级别的定制。下面就是怎样在 Recharts 中构建堆叠式条形图的方法:

在这个例子以及所有随后的例子中,我都使用了 colors、dateFormatter 和 numberFormatter 变量。下面展示了我是如何定义它们的:

Demo 见:

https://codesandbox.io/embed/4j4jlz33z0?fontsize=14&initialpath=/recharts

Victory

https://formidable.com/open-source/victory/

Victory 使用了和 Recharts 相同的组合模式。

它是由 Formidable 开发的。除了 Victory 外,Formidable 还拥有其它可靠的开源库。它是列表中唯一一个能够兼容 React Native 的库。

Victory 是仅次于 Recharts 的第二受欢迎的库,在 Github 上有 7000 颗星,但是它的开启的 issue 只是 Recharts 的五分之一。Victory 在 Spectrum 上有一个社区聊天群。

它的 文档化良好 而且有一个 示例陈列馆。

Victory 提供了 2 个样式风格:灰度和 Material,并且能让你创建客户主题,从而使所有图表的外观保持一致。下面,你可以看到我们堆叠式的条形图在 Victory 里面的代码。

Demo 见:

https://codesandbox.io/embed/4j4jlz33z0?fontsize=14&initialpath=/victory

Nivo

https://nivo.rocks/

同 Recharts 和 Victory 一样,Nivo 基于 D3 而且是 React 特有的。但与前面的库不同的是,它不支持图表组合。每个图表类型仅提供了一个组件,而且这个组件是通过多个 props 来配置的。Nivo 是针对特定的图表类型如 @nivo/bar 的一套程序包。所以,你需要安装特定的程序包,才能使用特定的图表类型。

该项目本身非常活跃。它在 Github 上有 5000 颗星,在社区聊天群中有 300 名成员。

它的文档非常互动化,你可以根据文档构建图表的配置。虽然它很好,但是它缺乏一个纯文本形式的 API 参考和搜索功能。此外,它还有一个带有示例的 Storybook。它大大地缩减了我创建第一张表的时间。同 Victory 一样,Nivo 让你能够创建自己的主题,从而使所有图标的外观保持一致。

我们将在堆叠式的条形图中使用 @nivo/bar 包。你可以在下面找到代码示例和 CodeSandbox 的演示。

Demo 见:

https://codesandbox.io/embed/4j4jlz33z0?fontsize=14&initialpath=/nivo

BizCharts

https://bizcharts.net/products/bizCharts

BizCharts 是一个基于 G2 的 React 特有的可视化库,G2 是一种可视化语法。BizCharts 由阿里巴巴支持,并且能够和 Ant Design 框架良好配合。

它在 Github 上约有 4000 颗星,但是大部分的开发仍是中文的,其文档也是如此。据我所知,该团队正在翻译这些文档,但是仍未完成所有的翻译。

虽然它欠缺英文文档,但是其 API 非常简单易懂。唯一的困难是你需要将数据格式转化成堆叠式图表特有的格式。

Demo 见:

https://codesandbox.io/embed/4j4jlz33z0?fontsize=14&initialpath=/bizcharts

React-vis

https://uber.github.io/react-vis/

React-vis 是由 Uber 开发的,而且目前在 Github 上有 5400 颗星、150 个开启的 issue,最近也有很多提交,因此它似乎非常活跃。它是模块化的,这点同列表中的大多数库一样。它还有许多非常棒的默认风格,这些风格必须单独以 CSS 文件的方式导入。

同 Nivo 一样,React-vis 也有带有示例的故事簿。其组件 API 的文档化也非常好。在定制方面,你可以通过定制的 CSS 风格来控制其外观和给人的感觉。React-vis 还提供了一个特别的组件即 CustomSVGSeries 来构建定制的 SVG 图表。

其 API 和 Victory 的相似。下面,你可以看到,我使用了与 Victory 代码段几乎一模一样的 transformResult。

Demo 见:

https://codesandbox.io/embed/4j4jlz33z0?fontsize=14&initialpath=/react-vis

查看英文原文:

https://blog.statsbot.co/react-visualization-libraries-in-2019-91be49a01158

你喜欢的 React 可视化库是哪个呢?欢迎留言分享。

 活动推荐

小程序自诞生以来,经过两年多的发展,成为了微信开发者生态中最具有生命力的一环,为外部开发者开辟了全新的想象空间。然而,小程序带来的改变绝不仅限于微信之外,小程序技术栈的确立,又对微信客户端的研发产生了怎样的影响?

GMTC 邀请微信高级工程师张志坚,来聊聊小程序对微信内部的改变。更多关于前端圈的最新技术干货欢迎点击“阅读原文”了解,也可咨询小姐姐:18514549229(同微信)

登录查看更多
2

相关内容

React.js(React)是 Facebook 推出的一个用来构建用户界面的 JavaScript 库。

Facebook开源了React,这是该公司用于构建反应式图形界面的JavaScript库,已经应用于构建Instagram网站及 Facebook部分网站。最近出现了AngularJS、MeteorJS 和Polymer中实现的Model-Driven Views等框架,React也顺应了这种趋势。React基于在数据模型之上声明式指定用户界面的理念,用户界面会自动与底层数据保持同步。与前面提及 的框架不同,出于灵活性考虑,React使用JavaScript来构建用户界面,没有选择HTML。Not Rest

【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
AI创新者:破解项目绩效的密码
专知会员服务
33+阅读 · 2020年6月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
React Native 分包哪家强?看这文就够了!
程序人生
13+阅读 · 2019年1月16日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Vue.js 很好,但是比 Angular 或 React 更好吗?
程序猿
3+阅读 · 2017年8月27日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Arxiv
101+阅读 · 2020年3月4日
Arxiv
7+阅读 · 2018年1月10日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
AI创新者:破解项目绩效的密码
专知会员服务
33+阅读 · 2020年6月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
相关资讯
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
React Native 分包哪家强?看这文就够了!
程序人生
13+阅读 · 2019年1月16日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Vue.js 很好,但是比 Angular 或 React 更好吗?
程序猿
3+阅读 · 2017年8月27日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Top
微信扫码咨询专知VIP会员