Ищу библиотеку графиков на JavaScript (лучше на React)

Вопрос или проблема

Я давно ищу библиотеку графиков, которая бы поддерживала все необходимые функции, после того как я попробовал vis.js, echarts, recharts и т.д.

Требования к проекту:

  • разворачивающееся дерево при нажатии на узел
  • события на узлах / ребрах
  • подписи / всплывающие подсказки как на ребрах, так и на узлах

Лучше всего, если будет поддержка React и рендеринг HTML-компонентов как узлов и ребер.

Как вы, вероятно, уже знаете, D3JS считается многими лучшей библиотекой для построения графиков на JS – просто посмотрите на отличные примеры

Поиск по запросу collapsible D3JS дал несколько результатов, так что, похоже, это возможно. У меня нет времени искать именно реализацию, поэтому, пожалуйста, поищите и исследуйте это сами.

Смотрите, например, https://stackoverflow.com/questions/30496291/how-to-create-d3-js-collapsible-force-layout-with-non-tree-data

И этот демонстрационный пример.

Вот ваш ответ, но вам нужно будет писать код 🙂

Мое предложение – попробовать библиотеку Syncfusion React Diagram.

Я создал пример с разворачивающимися узлами с подписью, всплывающей подсказкой и уведомлением с использованием событий диаграммы. Найдите пример по следующей ссылке.

пример: https://xvk22yvl4.codesandbox.io/
Исходный код: https://codesandbox.io/s/xvk22yvl4

В этом примере я создал событие клика для узла, когда вы нажимаете на узел, появляется сообщение с предупреждением. Для полной документации по API посетите здесь

Другие связанные ссылки:

Демонстрация всплывающих подсказок,
UG для создания подписей с использованием аннотаций

Примечание: Я работаю в компании Syncfusion

Ответ или решение

Выбор библиотеки для построения графиков в React — это непростая задача, учитывая разнообразие доступных решений. После анализа ваших требований и упоминания различных библиотек, таких как vis.js, echarts и recharts, я бы рекомендовал обратить внимание на несколько опций, которые могут удовлетворить ваши потребности в построении графиков с возможностью разворачивания деревьев по клику, событий на узлах и рёдрах, а также поддержки HTML-компонентов как для узлов, так и для рёдров.

1. D3.js

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

  • События на узлах и рёдрах: вы можете настроить прослушиватели событий на узлах, реагируя на взаимодействия пользователя.
  • Всплывающие подсказки и метки:D3 позволяет встраивать любой HTML или SVG контент, что даёт возможность реализовывать продвинутые.tooltip и метки.

Свойство D3.js, позволяющее манипулировать DOM, может быть немного сложным в контексте использования с React, так как они оба пытаются управлять одной и той же частью UI, но есть множество примеров и ресурсов, которые могут быть вам полезны.

2. Syncfusion React Diagram

Как уже упоминалось в вашем запросе, Syncfusion предлагает библиотеку React Diagram, которая полностью соответствует вашим требованиям. Вот некоторые ключевые особенности:

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

К тому же, Syncfusion оптимизирована для работы с React, что значительно упрощает процесс разработки.

Пример

Рабочий пример можно найти здесь, где продемонстрированы кликовые события и добавление подсказок. Полную документацию по API можно изучить здесь.

3. React Flow

Другой вариант — использование библиотеки React Flow. Эта библиотека специально разработана для работы с графами и узловыми структурами. Она выделяется своей простотой интеграции с React:

  • Динамическое обновление состояния: React Flow позволяет манипулировать состоянием узлов, что делает его идеальным для реализации взаимодействий.
  • События и метки: Поддерживает события и кастомизацию узлов с использованием HTML и SVG.

Заключение

Для ваших требований наилучшим решением будет использование Syncfusion React Diagram или React Flow, в зависимости от ваших предпочтений в стилях разработки и необходимых функциональных возможностях. D3.js также является отличным вариантом, но может потребоваться дополнительное время на изучение и интеграцию с React.

Если у вас есть дополнительные вопросы или необходима помощь с конкретной реализацией, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...