Architecture Decision Record

Active theme: Light

← 决策记录例子

架构决策记录:用 TypeScript 搭 JSON 做数据可视化个图表库工具包

首要目标: 选一个高级图表工具包,用 TypeScript 搭 JSON 创建交互式可视化,重点是金融数据、科学数据搭政府数据。迭个库应该功能稳固、灵活,而且是开源个。

背景搭需求:

  1. 敏捷开发(高优先级):作为创业公司,快速迭代、做原型搭开发上个灵活性是必需个。图表库必须支持快速个开发周期。

  2. 图表类型(高优先级):

    • 环形图
    • 雷达图
    • 聚类过程图
    • 带时间轴个面积图
    • K 线图
    • 南丁格尔图
    • 地理 SVG 地图

    迭眼图表类型对于可视化复杂个数据集特别重要,比方金融趋势、科学指标搭地理信息。

  3. 免费开源(高优先级):工具包应该是开源个,避免许可成本,保持透明,并且提供定制个灵活性。

  4. 低重要性标准:

    • 运行速度:虽然性能重要,勿过勿是迭个决策个首要考虑。
    • 可扩展性:虽然可扩展性总体上重要,勿过眼下个需要是建一个 MVP,以后可能慢慢长大。可扩展性方面个顾虑可以以后再处理。
    • 向后兼容:初始构建时勿是主要顾虑,只要库是现代个、有人积极维护就好。

评估过个库:

  1. Apache ECharts
  2. Chart.js
  3. ApexCharts
  4. AG Charts
  5. Highcharts
  6. Carbon Charts
  7. Layer Cake
  8. D3.js

1. Apache ECharts

概述: Apache ECharts 是一个强大、灵活个图表库,用来做交互式、可定制个可视化。伊支持各种各样个图表,特别擅长复杂、动态个可视化。

长处:

  • 高级交互性:ECharts 擅长提供交互式图表,提供缩放、平移搭动态数据更新等功能。
  • 环形图、雷达图、K 线图、地理 SVG 地图:ECharts 支持许多所需个图表类型,包括环形图、雷达图、K 线图搭地理地图可视化。
  • 免费开源:ECharts 是开源库,适合创业公司对预算敏感个特点,也让修改代码有自由。
  • 灵活搭可扩展:高度可定制,对动画、自定义可视化搭高级图表技术有广泛个支持。

短处:

  • 学习曲线:ECharts 虽然强大,勿过因为灵活搭 API 庞大,学习曲线可能比较陡。
  • 文档复杂:文档全面,勿过对刚开始用伊个开发者来讲可能不堪重负。

结论: ECharts 非常适合迭个项目,因为伊支持交互式图表,包括 K 线图、雷达图搭地理地图等所有所需个类型。伊个开源性质搭项目对灵活性搭成本效益个需要一致。


2. Chart.js

概述: Chart.js 是一个简单、容易用个图表库,用来构建常见个图表类型。伊以简单搭容易集成出名。

长处:

  • 易用性:Chart.js 设置搭使用都非常简单,学习曲线最小。
  • 开源:Chart.js 免费又开源,对降低成本至关重要。
  • 常见图表类型:伊支持环形图、面积图、雷达图搭折线图迭类基本图表,覆盖大部分主要需要。

短处:

  • 高级图表有限:Chart.js 原生勿支持 K 线图、地理 SVG 地图或者聚类过程图迭类复杂图表类型。虽然迭眼功能可以通过插件或者定制加进去,勿过勿像其他库那能直接。
  • 交互性:虽然 Chart.js 支持基本个交互性(比方提示框搭悬停效果),勿过伊提供个功能勿如 ECharts 或者 D3.js 高级。

结论: Chart.js 适合简单、快速个项目,勿过伊缺少对复杂图表类型个支持,所以勿适合有 K 线图搭地理地图迭类高级需要、数据密集个应用。伊适合做原型,勿过对所需个图表类型,建议用更加高级个工具。


3. ApexCharts

概述: ApexCharts 是一个现代个图表库,提供各种图表类型,专注辣交互式可视化,API 容易用。

长处:

  • 交互功能:ApexCharts 提供带提示框、缩放、平移搭更新个交互式图表。
  • 支持金融搭科学图表:伊支持各种各样个图表类型,包括 K 线图、雷达图搭面积图。
  • 易用性:伊个 API 直截了当,容易集成到项目里。
  • 免费开源:ApexCharts 提供免费个开源版本,适合许多用例。

短处:

  • 定制复杂:虽然伊提供许多功能,勿过对高度复杂或者自定义个图表需要,定制选项勿如 ECharts 或者 D3.js 灵活。
  • 地理地图:ApexCharts 原生勿支持地理地图或者聚类过程图,而迭个项目需要迭眼。

结论: ApexCharts 因为易用搭交互性,是一个强有力个竞争者,勿过伊辣某眼高级图表类型上有欠缺,特别是需要地理地图搭聚类图个情形。伊适合较简单个图表,勿过缺少某眼所需个功能。


4. AG Charts

概述: AG Charts 是一个商业级个图表库,针对性能搭精度设计。伊非常适合创建金融、科学搭商业仪表盘。

长处:

  • 高级图表类型:AG Charts 支持许多高级图表类型,包括 K 线图、面积图、雷达图等等。伊还搭其他 AG-Grid 产品深度集成。
  • 高性能:伊提供出色个性能,特别是处理大数据集个辰光。
  • 交互性:AG Charts 支持缩放、提示框搭动态更新等各种交互功能。

短处:

  • 勿完全免费:虽然 AG Charts 提供免费版本,勿过功能完整个版本要付费,对想要尽量减少成本个创业公司来讲可能是障碍。
  • 复杂:虽然库功能丰富,勿过对较简单个项目可能杀鸡用牛刀,搭其他选项比起来,可能需要更加多个设置搭配置。

结论: AG Charts 强大、功能丰富,勿过因为伊个商业性质搭成本结构,可能勿是最合适个。伊适合勿适合,取决于预算能勿能容纳付费版本,还是更加倾向开源个替代品。


5. Highcharts

概述: Highcharts 是一个流行个图表库,以丰富个图表类型搭强大个定制选项出名。

长处:

  • 图表类型全面:Highcharts 支持各种各样个图表,包括 K 线图、雷达图、面积图搭地理地图。
  • 交互又动态:Highcharts 提供丰富个交互功能,包括下钻、缩放搭平移。
  • 易用性:伊有对用户友好个 API 搭好个文档,容易上手。

短处:

  • 商业许可:虽然 Highcharts 对非商业用途提供免费版本,勿过商业许可价钿贵,对创业公司来讲可能是明显个缺点。
  • 学习曲线:虽然勿像 ECharts 那能陡,勿过 Highcharts 个学习曲线对初学者来讲仍旧可能有挑战。

结论: Highcharts 是一个功能丰富个库,勿过伊个商业许可让伊勿大适合开源、对成本敏感个项目。伊全面个图表选项是优点,勿过许可问题限制了伊对迭个用例个吸引力。


6. Carbon Charts

概述: Carbon Charts 是 IBM 开发个图表库,用来创建好看、高度可定制个图表。

长处:

  • 可定制性:Carbon Charts 允许对图表个外观搭行为做广泛个定制。
  • 开源:伊免费又开源,搭项目对预算友好个解决方案个要求一致。
  • 支持常见图表:伊支持环形图、雷达图搭面积图迭类常见图表类型,勿过缺少对地理地图或者 K 线图迭类更加高级类型个支持。

短处:

  • 高级图表类型有限:伊勿支持地理地图、聚类过程图或者 K 线图,而迭眼对项目是必需个。
  • 生态较小:搭 ECharts 或者 Highcharts 迭类更加大个图表库比起来,Carbon Charts 个社区搭生态较小。

结论: Carbon Charts 开源又可定制,勿过缺少对迭个项目所需更加复杂图表类型个支持。伊更加适合较简单个图表需要。


7. Layer Cake

概述: Layer Cake 是一个数据可视化库,用来创建灵活、分层个可视化。

长处:

  • 可定制个图层:伊为复杂个可视化提供强大个分层选项。
  • 开源:伊免费又开源,对预算敏感个项目是可行个选项。

短处:

  • 文档有限:Layer Cake 缺少广泛个文档搭社区支持,搭更加成熟个库比起来,用起来更加困难。
  • 勿是为图表而建:Layer Cake 更加适合非图表类个可视化,所以伊开箱即用个图表选项有限。

结论: 虽然对独特个可视化蛮有意思,勿过 Layer Cake 勿适合 K 线图或者雷达图迭类传统个图表需要。伊更加适合标准图表范围之外个自定义可视化。


8. D3.js

概述: D3.js 是一个强大个 JavaScript 库,通过 HTML、SVG 搭 CSS 创建数据驱动个可视化。

长处:

  • 无可匹敌个灵活性:D3.js 允许创建几乎任何种类个自定义可视化,所以对高级搭交互式图表非常强大。
  • 功能广泛:伊支持所有所需个图表类型,包括地理地图、聚类图等等。
  • 可定制:D3.js 个定制程度无与伦比,让开发者可以构建高度量身定做个可视化。

短处:

  • 学习曲线陡:D3.js 学习曲线陡,搭其他库比起来,集成更加复杂。
  • 耗辰光:用 D3.js 构建图表可能耗辰光,特别是 K 线图或者环形图迭类常见图表。

结论: D3.js 对高级、定制化个图表极其强大,勿过因为学习曲线陡、开发辰光长,对许多典型用例来讲杀鸡用牛刀。伊最适合其他图表库提供勿了所需定制程度个情形。


结论

根据项目个需要评估了迭眼库之后,Apache ECharts 脱颖而出,是最好个选项。伊支持所有所需个图表,包括地理地图、K 线图搭聚类图。伊开源、功能丰富、交互性强,搭项目个目标完全一致。虽然 D3.js 提供最大个灵活性,勿过伊个复杂度搭辰光投入,让伊勿适合想快速迭代个创业公司。ApexCharts 搭 Chart.js 对较简单个项目是好个替代品,勿过缺少对高级图表类型个支持。