LINUX.ORG.RU

Graphviz


0

0


Graphviz -- крутая вещь, позволяющая визуализировать всё что угодно, если только это что-то можно представить в виде графа.

В новой статье на developerWorks от IBM рассказывается о том, как Graphviz может помочь при визуализации вызовов функций.

>>> Visualize function calls with Graphviz



Проверено: Shaman007 ()

интересная статья, спасибо

nsav
()

Это случайно, не та программа, которую Bugzilla использует для рисования дерева зависимостей?

Android
()

Скоро будем программы мышой рисовать

anonymous
()

Сколько не мучался, так и не смог по русски без кракозябликов написать. Может кто знает, что делать?

anonymous
()

очень удобно, не надо код засорять записью отладочной информации. хорошая тулза.

fashist
()
Ответ на: комментарий от anonymous

>Сколько не мучался, так и не смог по русски без кракозябликов написать

В UTF-8 писать нужно. И шрифт соответствующий указать, например: 'fontname="arial"'.

kaaos
()
Ответ на: комментарий от Android

> Это случайно, не та программа, которую Bugzilla использует для рисования дерева зависимостей?

Скорее всего та самая, т.к. похожие картинки с помощью graphviz рисуют в doxygen.

Esh ★★★★
()

Новое это хорошо забытое старое :) Проге наверное лет около десяти. Но полезность ее это не уменьшает никаки.

offtopic: Для виндузятников есть Wingraphiz и его можно чутьли не из VBScript пользовать.

zZzZ
()
Ответ на: комментарий от zZzZ

Под Mac OS X тоже есть реализация graphviz, от pixelglow (http://www.pixelglow.com/graphviz/), кстати получившая в 2004 Apple Design Awards.

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

В сочетании с Perl'ом прекрасный инструмент для анализа и визуализации практически любой информации.

При визуализации граф может быть представлен как иерархические (dot), так и по алгоритму минимизации энергии (energy minimized), когда узлы располагаются максимально компактно, насколько это возможно не нарушая наглядность (neato).

Она поддерживает множество выходных форматов, в частности png и ps. (кстати, у кого проблемы с визуализацией русского, проверьте, сохраняется ли проблема во всех форматах или присутствует только в некоторых).

И ещё она стыкуется с Web. Сделать так чтобы кликанье по узлам графа переводило на соответствующие линки элементарно. Кстати, по-моему где-то на graphviz.org есть пример того, как построить карту сайта в два счёта.

devigor
() автор топика
Ответ на: комментарий от PETER

Да, вопрос, с ее помошью можно нарисовать генеалогическое дерево?

Трабла в том, что должно быть:

г   A   B
о    \ /
д     C    E
ы      \  /
         G

Т.е., как мне обяснили зависимости бываю СЛОЖНЕЙШИЕ!

ManJak ★★★★★
()
Ответ на: комментарий от ManJak

Можно. Надо использовать приоритеты узлов. В примерах к программе есть подобные графы (в т.ч. генеалогическое дерево unix).

anonymous
()
Ответ на: комментарий от anonymous

Пасиб, пошел бороздить прсторы Большого театра, сорри - интернета =)

ManJak ★★★★★
()
Ответ на: комментарий от ManJak

Это сделать элементарно.

Граф, который ты нарисовал описывается так:

graph G_Tree {
   A -- C;
   B -- C;
   C -- G;
   E -- G;
}

Для визуализации используй dot, а не neato.

А по поводу сложнейших зависимостей,
если эти зависимости можно представить в виде
направленного или ненаправленного графа, 
graphviz с этим легко справится

devigor
() автор топика

Как всё-таки по-разному звучит...

$(subj)

>позволяющая визуализировать графы.

и

>позволяющая визуализировать всё что угодно, если только это что-то можно представить в виде графа.

Dimentiy ★★
()
Ответ на: комментарий от devigor

Вот например, таксономию свободного программного обеспечения мы можем представить в виде графа? Можем.

Пример визуализации этого графа с помощью graphviz смотрите здесь: http://fm-trove-graph.narod.ru/photoalbum.html

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

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

devigor
() автор топика

ААА! Как кстати! Это прямо то что мне сейчас нужно (это я про graphviz)

CrazyPit ★★★
()
Ответ на: комментарий от anonymous

> Сколько не мучался, так и не смог по русски без кракозябликов написать. Может кто знает, что делать?

Вывод надо делать в UTF-8, после чего по--моему все растровые форматы будут показывать текст нормально, НО! из векторных у меня только SVG нормально выводит русский. Из Inkscape я уже делаю ps...

inkscape --print="> $2" -f $1

anonymous
()
Ответ на: комментарий от devigor

Это я понял, уже почти сутки эксперементирую и читаю, трабла в том,
что не представляю, как слева (справа) сделать ось времени и привязывать почки или как их там, этого долбаного дерева, к  
оси времени!

Это, в принципе, возможно?



|
-   Событие 1  Событие2
|
-          Событие 4
|
-
|
-        Событие n
|
-
|

Само дерево-то нарисовать не проблемма =)
Просто, как мне показали, оно должно не просто строить зависимости,
но еще и по времени вертикальная ось.

Во как, пока не придумал сам =)

ManJak ★★★★★
()
Ответ на: комментарий от ManJak

Пример по твоему вопросу есть прямо в документации к graphviz. В файле dot.png есть пример по иерархии Unix-систем с привязкой ко времени.

Нашёл?

devigor
() автор топика
Ответ на: комментарий от ManJak

И в документации по xvcg есть нужный тебе пример

anonymous
()
Ответ на: комментарий от ManJak

Страница 18 документации по dot.

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

{rank = same; A; B; }

и всё.

devigor
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.