📈

Reactのチャートライブラリ調査メモ in 2023春

2023/04/15に公開

背景

業務上、グラフを作成することが多いのですが、毎回機能の調査をしている気がしたので、ざっくり特徴をまとめました。

調査したライブラリ

Recharts

https://github.com/recharts/recharts

ApexCharts

https://github.com/apexcharts/apexcharts.js
https://github.com/apexcharts/react-apexcharts

  • サンプル https://apexcharts.com/react-chart-demos/
  • 最終リリース
    • 本体 2023/2/5
    • ラッパー a year ago
  • SVGベース
  • その他
    • APIは使いやすく、コード量も少なくて済みそう
    • 本体のapexchart.jsとラッパーのreact-apexchartsの両方が必要
    • Zoom、CSV/PNGダウンロードなどをフラグ1つで実現できるのがGood
    • 結構issueが放置されていたり、botに閉じられていたりするため、普通に使っていてもバグを踏むことが結構ある。。。
    • React18未対応? https://github.com/apexcharts/react-apexcharts/issues/493

Chart.js

https://github.com/chartjs/Chart.js
https://github.com/reactchartjs/react-chartjs-2

Apache Echarts

https://github.com/apache/echarts
https://github.com/hustcc/echarts-for-react

  • サンプル https://echarts.apache.org/examples/en/
  • 最終リリース
    • 本体 3 weeks ago
    • ラッパー 2021/10/29
  • Canvasベース
  • その他
    • 本体のechartsとラッパーのecharts-for-reactの両方が必要
    • Echarts自体はそれなりに更新されているが、ラッパーの方はあまり更新されていなさそう
    • Issueが1割くらい中国語なので辛い

d3

https://github.com/d3/d3

  • サンプル https://observablehq.com/@d3/gallery
  • 最終リリース 2 weeks ago
  • SVGベース
  • その他
    • チャートライブラリというよりは、svgの機能をラップしたutil群のイメージが近い
    • React、TypeScriptと一緒に使うのは相当辛い
    • 「グラフを表示する」という目的の上では、他のライブラリでどうしても実現できない場合の最終手段としたいが、それにしてもまずは後述のVisxを検討したい

Visx

https://github.com/airbnb/visx

  • サンプル https://airbnb.io/visx/gallery
  • 最終リリース 3 weeks ago
  • SVGベース
  • その他
    • これもチャートライブラリというよりは、d3をReact用に更にラップしたライブラリのイメージが近い
    • コード量は多くなるものの、拡張性は高い
    • 一応、xychartという他のチャートライブラリのようなAPIもある(が、ズームの実装などは軸のスケールがされなかったりと割と厳しそう)

nivo

https://github.com/plouc/nivo

Victory

https://github.com/FormidableLabs/victory

Ant Design Charts

https://github.com/ant-design/ant-design-charts/

  • サンプル https://charts.ant.design/en/examples/gallery
  • 最終リリース 2022/7/19
  • その他
    • Alibaba
    • 機能が多く、特にTree Graphが充実しているのはGood
    • Issueが半分くらい中国語なので辛い
    • 更新頻度があまり高くなさそうなので、詳しくは調べていない

BizCharts

https://github.com/alibaba/BizCharts

React Charts

https://github.com/TanStack/react-charts

React-Vis

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

結論

個人的な結論としては、現段階ではRechartsをなるべく使用し、難しいものはVisxで対応とすると思います。

GitHubで編集を提案

Discussion