Мне нужно визуализировать график. Я не знаю, как назвать это (кстати, если вы знаете - я буду признателен, если вы скажете мне). Было бы идеально, чтобы элементы графа были кликабельными (так, чтобы, когда пользователь щелкает блок, я мог обработать событие с указанным идентификатором элемента), но я мог выжить даже без какой-либо интерактивности. Мне может хотелось бы иметь возможность сосредоточиться на конкретном узле и расположить все остальные так, чтобы они рассматривались с его точки зрения. Есть ли какие-либо компоненты, пригодные для этой задачи? Если нет, что мне следует искать, чтобы помочь мне разработать алгоритм построения такого графика с визуально удобным макетом?
Практическая природа этого графа довольно распространена: каждый блок представляет собой производную от 2 операндов. Оранжевые кружки - это ссылки на 2 операнда, зеленые кружки - это точки подключения к потребителю. Может быть важно различать положение операнда (левый или правый), например, если деривация представляет математическую операцию разности или деления (в этом конкретном случае блок может быть треугольным, но в других случаях сам операнд может использовать знать, для каких блоков это левый операнд и для каких блоков это право). Другое распространенное применение - пересекающиеся множества со сложными отношениями.