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 ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.