Architecture Decision Record

Active theme: Light

← Примеры записей решений

Запись архитектурного решения: набор библиотек диаграмм для визуализации данных на TypeScript и JSON

Основная цель:
Выбрать продвинутый набор инструментов для диаграмм для создания интерактивных визуализаций с упором на финансовые, научные и государственные данные с использованием TypeScript и JSON. Библиотека должна обладать надёжными функциями, гибкостью и быть с открытым исходным кодом.

Контекст и требования:

  1. Гибкая разработка (высокий приоритет): как стартапу нам необходимы быстрая итерация, прототипирование и гибкость в разработке. Библиотека диаграмм должна допускать быстрые циклы разработки.

  2. Типы диаграмм (высокий приоритет):

    • Кольцевая диаграмма (Doughnut Chart)
    • Лепестковая диаграмма (Radar Chart)
    • Диаграмма процесса кластеризации (Clustering Process Chart)
    • Диаграмма с областями и временной осью (Area Chart with Time Axis)
    • Японские свечи (Candlestick Chart)
    • Диаграмма Найтингейл (Nightingale Chart)
    • Географическая SVG-карта (Geo SVG Map)

    Эти типы диаграмм особенно важны для визуализации сложных наборов данных, таких как финансовые тенденции, научные показатели и географическая информация.

  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 отлично предоставляет интерактивные диаграммы с такими функциями, как масштабирование, панорамирование и динамические обновления данных.
  • Кольцевая, лепестковая, свечи, географические SVG-карты: ECharts поддерживает многие из требуемых типов диаграмм, включая кольцевые, лепестковые, свечи и визуализации географических карт.
  • Бесплатность и открытый исходный код: ECharts — библиотека с открытым исходным кодом, что соответствует бюджетной природе стартапа и даёт свободу изменять код.
  • Гибкость и расширяемость: высоконастраиваема, с обширной поддержкой анимаций, пользовательских визуализаций и продвинутых техник построения диаграмм.

Слабые стороны:

  • Кривая обучения: ECharts, хотя и мощна, может иметь более крутую кривую обучения из-за своей гибкости и обширного API.
  • Сложность документации: документация исчерпывающая, но может быть подавляющей для разработчиков, только начинающих работу с ней.

Вердикт:
ECharts очень подходит для проекта благодаря поддержке интерактивных диаграмм, включая все требуемые типы, такие как японские свечи, лепестковые диаграммы и географические карты. Её открытый исходный код соответствует потребности проекта в гибкости и экономичности.


2. Chart.js

Обзор:
Chart.js — простая, лёгкая в использовании библиотека диаграмм для построения распространённых типов диаграмм. Она известна простотой и лёгкостью интеграции.

Сильные стороны:

  • Простота использования: Chart.js очень проста в настройке и использовании, с минимальной кривой обучения.
  • Открытый исходный код: Chart.js бесплатна и с открытым исходным кодом, что критично для снижения затрат.
  • Распространённые типы диаграмм: она поддерживает базовые диаграммы, такие как кольцевые, с областями, лепестковые и линейные, которые покрывают большинство основных потребностей.

Слабые стороны:

  • Ограниченные продвинутые диаграммы: Chart.js не поддерживает изначально сложные типы диаграмм, такие как японские свечи, географические SVG-карты или диаграммы процесса кластеризации. Хотя эти функции можно добавить через плагины или настройку, это не так просто, как в других библиотеках.
  • Интерактивность: хотя Chart.js поддерживает базовую интерактивность (например, всплывающие подсказки и эффекты наведения), она не предлагает таких продвинутых функций, как ECharts или D3.js.

Вердикт:
Chart.js отлична для простых, быстрых проектов, но отсутствие поддержки сложных типов диаграмм делает её непригодной для приложения, интенсивно работающего с данными, с продвинутыми потребностями, такими как японские свечи и географические карты. Это хороший выбор для прототипирования, но для требуемых типов диаграмм рекомендуются более продвинутые инструменты.


3. ApexCharts

Обзор:
ApexCharts — современная библиотека диаграмм, предоставляющая разнообразие типов диаграмм и сосредоточенная на интерактивных визуализациях с лёгким в использовании API.

Сильные стороны:

  • Интерактивные функции: ApexCharts предлагает интерактивные диаграммы со всплывающими подсказками, масштабированием, панорамированием и обновлениями.
  • Поддержка финансовых и научных диаграмм: она поддерживает широкое разнообразие типов диаграмм, включая японские свечи, лепестковые диаграммы и диаграммы с областями.
  • Простота использования: у неё простой API, и её легко интегрировать в проект.
  • Бесплатность и открытый исходный код: ApexCharts предлагает бесплатную версию с открытым исходным кодом, подходящую для многих случаев использования.

Слабые стороны:

  • Сложная настройка: хотя она предоставляет много функций, варианты настройки не так гибки, как у ECharts или D3.js, для очень сложных или нестандартных потребностей в диаграммах.
  • Географические карты: ApexCharts не поддерживает изначально географические карты или диаграммы процесса кластеризации, требуемые для этого проекта.

Вердикт:
ApexCharts — сильный претендент благодаря простоте использования и интерактивности, но уступает в некоторых продвинутых типах диаграмм, особенно в потребности в географических картах и диаграммах кластеризации. Это хороший вариант для более простых диаграмм, но ей не хватает некоторых требуемых функций.


4. AG Charts

Обзор:
AG Charts — библиотека диаграмм коммерческого уровня, разработанная для производительности и точности. Она очень подходит для создания финансовых, научных и бизнес-панелей мониторинга.

Сильные стороны:

  • Продвинутые типы диаграмм: AG Charts поддерживает многие продвинутые типы диаграмм, включая японские свечи, диаграммы с областями, лепестковые диаграммы и другие. Она также предлагает глубокую интеграцию с другими продуктами AG-Grid.
  • Высокая производительность: она обеспечивает отличную производительность, особенно при работе с большими наборами данных.
  • Интерактивность: AG Charts поддерживает различные интерактивные функции, такие как масштабирование, всплывающие подсказки и динамические обновления.

Слабые стороны:

  • Не полностью бесплатна: хотя AG Charts предлагает бесплатную версию, полнофункциональная версия платная, что может быть препятствием для стартапов, стремящихся минимизировать затраты.
  • Сложность: хотя библиотека богата функциями, она может быть избыточна для более простых проектов и может потребовать большей настройки и конфигурации по сравнению с другими вариантами.

Вердикт:
AG Charts мощна и богата функциями, но может не подойти лучше всего из-за своей коммерческой природы и структуры затрат. Её пригодность зависит от того, может ли бюджет вместить платные версии или предпочтительны альтернативы с открытым исходным кодом.


5. Highcharts

Обзор:
Highcharts — популярная библиотека диаграмм, известная широким спектром типов диаграмм и мощными возможностями настройки.

Сильные стороны:

  • Исчерпывающие типы диаграмм: Highcharts поддерживает широкое разнообразие диаграмм, включая японские свечи, лепестковые, с областями и географические карты.
  • Интерактивность и динамичность: Highcharts предлагает богатые интерактивные функции, включая детализацию, масштабирование и панорамирование.
  • Простота использования: у неё удобный API и хорошая документация, что облегчает начало работы.

Слабые стороны:

  • Коммерческая лицензия: хотя Highcharts предлагает бесплатную версию для некоммерческого использования, коммерческая лицензия дорога, что может быть существенным недостатком для стартапов.
  • Кривая обучения: хотя и не такая крутая, как у ECharts, кривая обучения Highcharts всё же может быть сложной для начинающих.

Вердикт:
Highcharts — богатая функциями библиотека, но её коммерческое лицензирование делает её менее подходящей для проектов с открытым исходным кодом, чувствительных к затратам. Её исчерпывающие варианты диаграмм — плюс, но проблема лицензирования ограничивает привлекательность для этого случая.


6. Carbon Charts

Обзор:
Carbon Charts — библиотека диаграмм, разработанная IBM для создания визуально привлекательных и высоконастраиваемых диаграмм.

Сильные стороны:

  • Настраиваемость: Carbon Charts допускает широкую настройку внешнего вида и поведения диаграмм.
  • Открытый исходный код: она бесплатна и с открытым исходным кодом, что соответствует требованию проекта к экономичным решениям.
  • Поддержка распространённых диаграмм: она поддерживает распространённые типы диаграмм, такие как кольцевые, лепестковые и с областями, хотя ей не хватает поддержки более продвинутых типов, таких как географические карты или японские свечи.

Слабые стороны:

  • Ограниченные продвинутые типы диаграмм: она не поддерживает географические карты, диаграммы процесса кластеризации или японские свечи, которые необходимы для проекта.
  • Меньшая экосистема: у Carbon Charts меньшее сообщество и экосистема по сравнению с более крупными библиотеками диаграмм, такими как ECharts или Highcharts.

Вердикт:
Carbon Charts с открытым исходным кодом и настраиваема, но ей не хватает поддержки более сложных типов диаграмм, необходимых для этого проекта. Она больше подходит для более простых потребностей в диаграммах.


7. Layer Cake

Обзор:
Layer Cake — библиотека визуализации данных, разработанная для создания гибких многослойных визуализаций.

Сильные стороны:

  • Настраиваемые слои: она предоставляет мощные варианты слоёв для сложных визуализаций.
  • Открытый исходный код: она бесплатна и с открытым исходным кодом, что делает её жизнеспособным вариантом для проектов с ограниченным бюджетом.

Слабые стороны:

  • Ограниченная документация: у Layer Cake нет обширной документации и поддержки сообщества, поэтому с ней сложнее работать по сравнению с более устоявшимися библиотеками.
  • Не создана для диаграмм: Layer Cake лучше подходит для визуализаций, не являющихся диаграммами, поэтому её готовые варианты диаграмм ограничены.

Вердикт:
Хотя Layer Cake интересна для уникальных визуализаций, она не идеальна для традиционных требований к диаграммам, таких как японские свечи или лепестковые диаграммы. Она больше подходит для нестандартных визуализаций за рамками стандартных диаграмм.


8. D3.js

Обзор:
D3.js — мощная библиотека JavaScript для создания визуализаций, управляемых данными, с помощью HTML, SVG и CSS.

Сильные стороны:

  • Непревзойдённая гибкость: D3.js позволяет создавать практически любой тип пользовательской визуализации, что делает её очень мощной для продвинутых и интерактивных диаграмм.
  • Обширные функции: она поддерживает все требуемые типы диаграмм, включая географические карты, диаграммы кластеризации и многое другое.
  • Настраиваемость: уровень настройки в D3.js не имеет себе равных, позволяя разработчикам создавать тонко подогнанные визуализации.

Слабые стороны:

  • Крутая кривая обучения: у D3.js крутая кривая обучения, и её сложнее интегрировать по сравнению с другими библиотеками.
  • Трудоёмкость: построение диаграмм в D3.js может быть трудоёмким, особенно для распространённых диаграмм, таких как японские свечи или кольцевые.

Вердикт:
D3.js невероятно мощна для продвинутых, настраиваемых диаграмм, но избыточна для многих типичных случаев использования из-за крутой кривой обучения и времени разработки. Она лучше всего подходит для ситуаций, когда другие библиотеки диаграмм не обеспечивают требуемого уровня настройки.


Заключение

После оценки библиотек на основе потребностей проекта Apache ECharts выделяется как лучший вариант. Она поддерживает полный спектр требуемых диаграмм, включая географические карты, японские свечи и диаграммы кластеризации. Она с открытым исходным кодом, богата функциями и очень интерактивна, что идеально соответствует целям проекта. Хотя D3.js предлагает наибольшую гибкость, её сложность и затраты времени делают её менее идеальной для стартапа, стремящегося быстро итерировать. ApexCharts и Chart.js — хорошие альтернативы для более простых проектов, но им не хватает поддержки продвинутых типов диаграмм.