Графвиз
(→CIRCO) |
|||
(не показаны 46 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
'''Графвиз''' - набор утилит для графического представления данных. | '''Графвиз''' - набор утилит для графического представления данных. | ||
− | Программа принимает описания отношений и элементов множеств, на которых определяется граф, и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную информацию, позволяющую "нарисовать" картинку | + | Программа принимает описания отношений и элементов множеств, на которых определяется [[граф]], и "добавляет" к этим лишенным всяких геометрических атрибутов описаниям дополнительную [[информация|информацию]], позволяющую "нарисовать" картинку [[граф]]а. |
Для использования Графвиз требуется использовать примитивный язык описания графов dgl. | Для использования Графвиз требуется использовать примитивный язык описания графов dgl. | ||
Строка 15: | Строка 15: | ||
</graphviz></nowiki> | </graphviz></nowiki> | ||
− | См. [[Графвиз руководство]] | + | === Специально для проекта Моя семья === |
+ | |||
+ | Для того, чтобы создать генеалогическое древо семьи в Летописи, нам потребуется пакет Графвиз и простые команды указания '''->'''. В дальнейших записях отношения '''А ->Б''' всегда означает, что А является родителем Б. Поскольку у людей родителей может быть двое, то мы эти родительские | ||
+ | отношения будем снабжать метками - [label="папа"] или [label="мама"] | ||
+ | |||
+ | digraph G { | ||
+ | //1 - Запишем участника ; | ||
+ | "Участник:Аксюта Герман" | ||
+ | // Запишем нового родственника и укажем, что он папа Участника | ||
+ | "Аксюта Владислав Николаевич" -> "Участник:Аксюта Герман" [label="папа"] ; | ||
+ | // Запишем нового родственника и укажем, что она мама Участника | ||
+ | "Аксюта Людмила Сергеевна" -> "Участник:Аксюта Герман" [label="мама"]; | ||
+ | // Запишем нового родственника и укажем, что он папа папы | ||
+ | "Аксюта Николай Николаевич" -> "Аксюта Владислав Николаевич" [label="папа"]; | ||
+ | } | ||
+ | |||
+ | Результат этих простых отношений пакет графвиз представит на следующем рисунке. В дальнейшем мы можем просто тихонечко наращивать это дерево. О том, как можно поворачивать деревья, окрашивать их в разные цвета, управлять их размерами и формами - смотрите и спрашивайте на страничке [[Графвиз руководство]] | ||
+ | |||
+ | |||
+ | <graphviz> | ||
+ | digraph G { | ||
+ | node [fontsize=14, shape="none"] | ||
+ | "Участник:Аксюта Герман" | ||
+ | "Аксюта Владислав Николаевич" -> "Участник:Аксюта Герман" [label="папа"] ; | ||
+ | "Аксюта Людмила Сергеевна" -> "Участник:Аксюта Герман" [label="мама"]; | ||
+ | "Аксюта Николай Николаевич" -> "Аксюта Владислав Николаевич" [label="папа"]; | ||
+ | } | ||
+ | </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
См.