Графвиз

Материал из Letopisi.Ru — «Время вернуться домой»
(Различия между версиями)
Перейти к: навигация, поиск
(Специально для проекта Моя семья)
(CIRCO)
(не показаны 29 промежуточных версий 3 участников)
Строка 1: Строка 1:
 
'''Графвиз''' - набор утилит для графического представления данных.  
 
'''Графвиз''' - набор утилит для графического представления данных.  
Программа  принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку графа.
+
Программа  принимает описания отношений и элементов множеств, на которых определяется [[граф]], и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную [[информация|информацию]], позволяющую "нарисовать" картинку [[граф]]а.
  
 
Для использования Графвиз требуется использовать примитивный язык описания графов dgl.  
 
Для использования Графвиз требуется использовать примитивный язык описания графов dgl.  
Строка 15: Строка 15:
 
</graphviz></nowiki>
 
</graphviz></nowiki>
  
===== Специально для проекта Моя семья =====
+
=== Специально для проекта Моя семья ===
  
 
Для того, чтобы создать генеалогическое древо семьи в Летописи, нам потребуется пакет Графвиз и простые команды указания '''->'''. В дальнейших записях отношения '''А ->Б''' всегда означает, что А является родителем Б. Поскольку у людей родителей может быть двое, то мы эти родительские  
 
Для того, чтобы создать генеалогическое древо семьи в Летописи, нам потребуется пакет Графвиз и простые команды указания '''->'''. В дальнейших записях отношения '''А ->Б''' всегда означает, что А является родителем Б. Поскольку у людей родителей может быть двое, то мы эти родительские  
Строка 44: Строка 44:
 
</graphviz>
 
</graphviz>
  
 +
<graphviz>
 +
digraph "DotFileParser" {
 +
    size="12.8,10.24";
 +
    "node0" [ label="BOF" shape=ellipse ];
 +
    "node1" [ label="EOF" shape=ellipse ];
 +
    "node2" [ label="graphName" shape=ellipse ];
 +
    "node3" [ label="{" shape=ellipse ];
 +
    "node4" [ label="stmtList" shape=ellipse ];
 +
    "node5" [ label="graphAttrib" shape=ellipse ];
 +
    "node6" [ label="node" shape=ellipse ];
 +
    "node7" [ label="edge" shape=ellipse ];
 +
    "node8" [ label="}" shape=ellipse ];
 +
    "node9" [ label="nodeName" shape=ellipse ];
 +
    "node10" [ label="edgePair" shape=ellipse ];
 +
    "node11" [ label="nodeList" shape=ellipse ];
 +
    "node12" [ label="edgeList" shape=ellipse ];
 +
    "node13" [ label="nodeAttrib" shape=ellipse ];
 +
    "node14" [ label="edgeAttrib" shape=ellipse ];
 +
    "node0" -> "node1" [ color=black fontcolor=black label="Empty file" ];
 +
    "node0" -> "node2" [ color=black ];
 +
    "node2" -> "node3" [ color=black ];
 +
    "node3" -> "node4" [ color=black ];
 +
    "node4" -> "node5" [ color=black ];
 +
    "node5" -> "node4" [ color=black ];
 +
    "node4" -> "node6" [ color=black ];
 +
    "node4" -> "node7" [ color=black ];
 +
    "node4" -> "node3" [ color=black fontcolor=black label="subGraph" ];
 +
    "node4" -> "node8" [ color=black ];
 +
    "node8" -> "node4" [ color=black ];
 +
    "node8" -> "node1" [ color=black ];
 +
    "node6" -> "node9" [ color=black ];
 +
    "node7" -> "node10" [ color=black ];
 +
    "node9" -> "node11" [ color=black fontcolor=black label="[" ];
 +
    "node9" -> "node4" [ color=black ];
 +
    "node10" -> "node12" [ color=black fontcolor=black label="[" ];
 +
    "node10" -> "node4" [ color=black ];
 +
    "node11" -> "node4" [ color=black fontcolor=black label="]" ];
 +
    "node12" -> "node4" [ color=black fontcolor=black label="]" ];
 +
    "node11" -> "node13" [ color=black ];
 +
    "node13" -> "node11" [ color=black ];
 +
    "node12" -> "node14" [ color=black ];
 +
    "node14" -> "node12" [ color=black ];
 +
}
 +
</graphviz>
 +
 +
=== Новые возможности Render ===
 +
Новая версия GraphViz Extension позволяет использовать '''renderer'''
 +
* renderer='dot'
 +
* renderer='twopi'
 +
* renderer='neato'
 +
* renderer='twopi'
 +
* renderer='sfdp'
 +
* renderer='circo'
 +
 +
==== DOT ====
 +
<graphviz renderer='dot'  >
 +
graph F {
 +
rankdir=LR ;
 +
A -- B -- C -- D -- F;
 +
F -- C -- A ;
 +
C -- E ;
 +
}
 +
</graphviz>
 +
 +
==== twopi ====
 +
<graphviz>
 +
graph T {
 +
rankdir=LR ;
 +
layout="twopi" ;
 +
A -- B -- C -- D -- F;
 +
F -- C -- A ;
 +
C -- E
 +
}
 +
</graphviz>
 +
 +
==== NEATO ====
 +
Метод «neato» использует «энергетическую» (spring) модель, по сути, близкую к методу искуственного отжига — начиная с некоторого состояния вершины перемещаются, чтобы минимизировать некую потенциальную энергию. Рекомендуем для ненаправленных графов общего вида.
 +
 +
<graphviz renderer='neato'>
 +
graph N {
 +
rankdir=LR ;
 +
A -- B -- C -- D -- F;
 +
F -- C -- A ;
 +
}
 +
</graphviz>
 +
 +
Обратить внимание - [[NetLogo]] layout - spring http://ccl.northwestern.edu/netlogo/docs/dict/layout-spring.html
 +
 +
==== CIRCO ====
 +
<graphviz renderer='circo'>
 +
graph C {
 +
rankdir=LR ;
 +
A -- B -- C -- D -- F;
 +
F -- C -- A ;
 +
}
 +
</graphviz>
 
----
 
----
  
См. [[Графвиз руководство]], [[Графвиз примеры]], [[Графвиз установка]]
+
См.  
 +
* [[Графвиз руководство]],  
 +
* [[Графвиз примеры]],  
 +
* [[Графвиз установка]]
 +
* [[Grapviz Webgraphviz]]
 +
 
 +
 
  
 
[[Категория:Расширения МедиаВики]]
 
[[Категория:Расширения МедиаВики]]
  
[[Категория:Средство]]
 
  
 
[[Категория:Графический пакет]]
 
[[Категория:Графический пакет]]
  
[[Категория:Графика]]
+
[[Категория:Графвиз]]
 +
 
 +
[[Category:GraphViz]]

Версия 09:30, 25 февраля 2019

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

Для использования Графвиз требуется использовать примитивный язык описания графов dgl. Основные понятия:

  • граф,
  • вершина графа -- элемент множества,
  • ребро графа, соединяющее вершину N с вершиной M


<graphviz> digraph G { Привет -> Читатель ; } </graphviz>

Содержание

Специально для проекта Моя семья

Для того, чтобы создать генеалогическое древо семьи в Летописи, нам потребуется пакет Графвиз и простые команды указания ->. В дальнейших записях отношения А ->Б всегда означает, что А является родителем Б. Поскольку у людей родителей может быть двое, то мы эти родительские отношения будем снабжать метками - [label="папа"] или [label="мама"]

digraph G {
//1 - Запишем участника ;
"Участник:Аксюта Герман"
// Запишем нового родственника и укажем, что он папа Участника
"Аксюта Владислав Николаевич" -> "Участник:Аксюта Герман" [label="папа"] ;
 // Запишем нового родственника и укажем, что она мама Участника
"Аксюта Людмила Сергеевна"  -> "Участник:Аксюта Герман" [label="мама"];
// Запишем нового родственника и укажем, что он папа  папы
"Аксюта Николай Николаевич" -> "Аксюта Владислав Николаевич" [label="папа"];
 }

Результат этих простых отношений пакет графвиз представит на следующем рисунке. В дальнейшем мы можем просто тихонечко наращивать это дерево. О том, как можно поворачивать деревья, окрашивать их в разные цвета, управлять их размерами и формами - смотрите и спрашивайте на страничке Графвиз руководство


Новые возможности Render

Новая версия GraphViz Extension позволяет использовать renderer

  • renderer='dot'
  • renderer='twopi'
  • renderer='neato'
  • renderer='twopi'
  • renderer='sfdp'
  • renderer='circo'

DOT

twopi

NEATO

Метод «neato» использует «энергетическую» (spring) модель, по сути, близкую к методу искуственного отжига — начиная с некоторого состояния вершины перемещаются, чтобы минимизировать некую потенциальную энергию. Рекомендуем для ненаправленных графов общего вида.

Обратить внимание - NetLogo layout - spring http://ccl.northwestern.edu/netlogo/docs/dict/layout-spring.html

CIRCO


См.

Персональные инструменты
Инструменты