Визуализация двудольного графа

может ли кто-нибудь порекомендовать библиотеку или код для визуализации двудольных графов в C#?

Graph#, похоже, не поддерживает этот вид графика напрямую (но имеет некоторая поддержка распутывания вершин).

Я хочу создать такую графику, как эта двудольный граф С текстом в узлах. Узлы одинаковой ширины и высоты будет идеальным.

элемент управления WPF был бы идеальным, поскольку он существует для graph#. Возможно, существует даже определение XAML? Как альтернатива: окно отчета также может быть очень хорошим.

вероятно, кто-то с большим опытом работы в Graph# может дать советы о том, как это сделать использование графика#.

попробовал немного с NodeXL, но это, кажется, не идеальное решение, поскольку узлы, похоже, не настолько модифицируемы. Возможно, кто-то может предоставить лучшее решение. Поиграли с NetworkView, предоставленным Soroush. В данный момент это ближе всего к тому, чего я хочу.

-обновить- Опробовал общая NetworkView по Соруш Falahati. Это, кажется, хорошая база, но еще не настолько гибок, как мне нужно. Я считаю, что есть нет библиотеки, которая может делать эти вещи из коробки. (NetworkView имеет отличную функцию для установки соединений / ребер в элементе управления что дает ему дополнительный импульс над NodeXL). Возможно, Graph# может сделать еще больше, но в данный момент я только что попробовал эти два.

6 ответов


вы можете приблизить визуализацию двудольного графа в NodeXL, и даже улучшить его, сняв пограничные переходы. Я взял ваш образец двудольного графа, и на изображении ниже я покрасил узлы с их стороны (u или v). Они выложены с помощью алгоритм Сугияма это минимизирует пересечения кромок. Я сделал это в интерактивном шаблоне NodeXL для Excel 2007 -- 2013, но все эти функции должны быть доступны как автономный класс NodeXL C# и WPF библиотеки. Текущие библиотеки на данный момент доступны для загрузки здесь.

Bipartite graph in NodeXL Sugiyama layout

Я также попробовал макет группы NodeXL в коробке, чтобы разделить группы и отобразить их по отдельности в сетке с предельными результатами.

NodeXL bipartite graph

отказ от ответственности: я советник проекта NodeXL.


на самом деле, если вы можете использовать клиентскую сторону jquery .. iwoul настоятельно рекомендуем jqPlumbs.. http://www.jsplumb.org/jquery/demo.html


ладно, как хочешь,

вот пример / библиотека, которая позволяет легко создавать графики и блок-схемы,

http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a

Это на самом деле очень хорошие характеристики.


  1. yFiles WPF - обширная библиотека классов .NET для приложений Windows Presentation Foundation (WPF). Его первоклассные элементы управления UI для просмотра и редактирования диаграмм позволяют автоматически упорядочивать сложные графики, диаграммы и сети одним нажатием кнопки. Наша библиотека диаграмм, созданная для приложений на основе Windows Forms, yFiles.NET

  2. графика# в рамках структуры графа. Он содержит некоторые алгоритмы компоновки и элемент управления GraphLayout для приложений WPF.

  3. использование WPF для визуализации графика с круговыми зависимостями


Если вы можете сделать это в Windows Forms, вы можете использовать NShape. Поскольку источник доступен, вы, вероятно, можете перенести его в WPF, если вам нужно. Это лучше, чем писать все с нуля. Или, возможно, вы можете разместить элемент управления WinForms, чтобы получить необходимую функциональность. Однако не так хорошо, как чистое решение WPF.


D3.js - это библиотека JavaScript для управления документами на основе данных. D3 помогает вам оживить данные с помощью HTML, SVG и CSS. Акцент D3 на веб-стандартах дает вам все возможности современных браузеров, не привязывая себя к собственной структуре, сочетая мощные компоненты визуализации и управляемый данными подход к манипуляции DOM

D3 позволяет привязывать произвольные данные к объектной модели документа (DOM), а затем применять управляемые данными преобразования к документ. Например, вы можете использовать D3 для создания таблицы HTML из массива чисел. Или используйте те же данные для создания интерактивной гистограммы SVG с плавными переходами и взаимодействием.

D3 не является монолитной структурой, которая стремится обеспечить все мыслимые функции. Вместо этого D3 решает суть проблемы: эффективное манипулирование документами на основе данных. Это во избежание собственническое представление и позволяет внесметную гибкость, подвергая действию полные возможности веб-стандартов, таких как CSS3, HTML5 и SVG. С минимальными накладными расходами D3 чрезвычайно быстр, поддерживает большие наборы данных и динамическое поведение для взаимодействия и анимации. Функциональный стиль D3 позволяет повторно использовать код через разнообразную коллекцию компонентов и плагинов.

http://d3js.org/

http://mbostock.github.com/d3/talk/20111116/force-collapsible.html