Skip to end of metadata
Go to start of metadata

Содержание

Введение

Модуль GraphViz предоставляет API, для того чтобы программист, не знакомый с библиотеками построения графов, мог без проблем построить несложные графы. Для построения графов с помощью модуля GraphViz нужно сделать следующее:

  1. Создать объект класса Graph.
  2. Добавить узлы и ребра графа с помощью методов AddNode и AddLink класса Graph.
  3. Сохранение графа на диск в указанный файл с помощью метода CreateGraph(string filePath).

Создание объекта класса

Конструктор содержит следующие переменные:

  • direction - направление графа, ссылка на перечисление EnGraphDirection. Возможные направления - горизонтальное и вертикальное
  • graphType - способ построения графа, ссылка на перечисление GraphType. Возможны следующие варианты:
    • dot - иерархический граф, имеет направление слева направо или сверху вниз

  • neaTo - граф строится минимизацией некоторой "функции энергии", получается примерно следующее:

  • circo - круговая отрисовка графа.
  • backGroundColor - цвет фона, задается в шестнадцатеричном RGB

Пример создания горизонтального графа типа "dot" с белым фоном

Добавление узлов и ребер

Узлы в граф добавляются с помощью метода класса Graph:

Узлы нужно добавлять строго до того, как будут добавлены сопряженные с ними ребра.

Некоторые параметры метода AddNode нуждаются в пояснении:

  • name - название узла. Может быть задано простой строкой, а может html таблицей, что позволяет делать сложные многострочные названия.
  • link - ссылка, по которой будет осуществляться переход при клике на узел. Если ссылка не нужна, то передается пустая строка
  • key - уникальный ключ узла. При построении графа может случиться так, что разные по смыслу элементы имеют одинаковое название. Поэтому было решено связывать элементы не по названию, а по ключу.
  • isHtmlLabel - флаг, задано ли название html таблицей
  • nodeShape - форма узла графа, ссылка на перечисление NodeShape. Сейчас доступны формы: круг(Circle), прямоугольник(Box), точка(Point), кольцо(DoubleCircle).

Пример добавления узла графа:

Получим узел прямоугольной формы, цвет шрифта - черный, цвет рамки - черный, цвет заливки - белый. В центре будет надпись name, по клику открывается google.com. Выглядит узел следующим образом:

Для добавления связей между узлами служит метод класса Graph

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

Создается стрелка от узла с ключом "key1" к узлу с ключом "key2". Пример результата приведен ниже.

Сохранение графа на диск

После того, как сформирована структура графа, то есть в граф добавлены все узлы и ребра вызывается метод CreateGraph(string filePath). Граф будет сохранен на диск в указанный файл.

Чтобы загрузить граф из файла, рекомендуется пользоваться статическим методом LoadGraphFromFile(string name).

Дополнительную информацию о возможностях построителя графов GraphViz можно найти на http://graphviz.org.

Укладкой графа и расчетом координат занимается библиотека GraphViz. Управлять укладкой можно, выбирая различные предустановленные roadmaps.