<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://lib.custis.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84</id>
		<title>CustisWiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://lib.custis.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84"/>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84"/>
		<updated>2026-05-01T19:23:41Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://lib.custis.ru/index.php?title=Graphviz&amp;diff=11159</id>
		<title>Graphviz</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Graphviz&amp;diff=11159"/>
				<updated>2009-09-01T08:04:19Z</updated>
		
		<summary type="html">&lt;p&gt;Картограф: /* Установка GraphViz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Graphviz''' — это разработанный специалистами лаборатории AT&amp;amp;T пакет утилит по автоматической визуализации графов, заданных в виде текстового описания. Пакет распространяется с открытыми исходными файлами и работает на всех операционных системах, включая Windows, Linux/Unix, Mac OS. Самой интересной программой пакета является «dot», автоматический визуализатор направленных графов, который принимает на вход текстовый файл со структурой графа, а на выходе формирует граф в виде графического, векторного или текстового файла.&lt;br /&gt;
 &lt;br /&gt;
= Быстрый старт =&lt;br /&gt;
&lt;br /&gt;
Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например,&lt;br /&gt;
&lt;br /&gt;
 digraph G{ &lt;br /&gt;
  Рождение-&amp;gt;Юность-&amp;gt;Зрелость-&amp;gt;Старость-&amp;gt;Смерть;&lt;br /&gt;
  Юность-&amp;gt;Смерть;&lt;br /&gt;
  Зрелость-&amp;gt;Смерть;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
на выходе будет&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt; &lt;br /&gt;
 digraph G{&lt;br /&gt;
      Рождение-&amp;gt;Юность-&amp;gt;Зрелость-&amp;gt;Старость-&amp;gt;Смерть;&lt;br /&gt;
      Юность-&amp;gt;Смерть;&lt;br /&gt;
      Зрелость-&amp;gt;Смерть;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений.&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать «dot»-графы в [[{{SITENAME}}]], используйте следующий синтаксис:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{ &lt;br /&gt;
  Рождение-&amp;gt;Юность-&amp;gt;Зрелость-&amp;gt;Старость-&amp;gt;Смерть;&lt;br /&gt;
  Юность-&amp;gt;Смерть;&lt;br /&gt;
  Зрелость-&amp;gt;Смерть;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, т. е.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
  &amp;quot;Полет фантазии&amp;quot;-&amp;gt;&amp;quot;Расход горючего&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поздравляем! Теперь вы способны рисовать графы в [[{{SITENAME}}]]. Остальной текст будет посвящен некоторым тонкостям использования [[Graphviz]].&lt;br /&gt;
&lt;br /&gt;
= Внешний вид графа =&lt;br /&gt;
«Dot» позволяет изменять внешний вид графа. Например, можно изменять форму фигур (прямоугольники, овалы, круги, параллелограммы, многоугольники), цвет и шрифт текста, цвет фона фигур, стиль стрелок и рамок фигур, подписи стрелок и т. д.&lt;br /&gt;
Итак, основные объектами являются узлы («node») и ребра («edge»). Для того, чтобы настроить свойства всех узлов или ребер нужно вначале использовать команды&lt;br /&gt;
 node[свойство1=&amp;quot;значение1&amp;quot;,свойство2=&amp;quot;значение2&amp;quot;,...]&lt;br /&gt;
 edge[свойство1=&amp;quot;значение1&amp;quot;,свойство2=&amp;quot;значение2&amp;quot;,...]&lt;br /&gt;
Также (в квадратных скобках после описания объекта) можно изменять настройки конкретного узла или ребра. Параметры графа, просто задаются в виде &amp;lt;tt&amp;gt;параметр=значение&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Полезно запомнить параметр «rankdir», он может быть «TB» (top-&amp;gt;bottom, параметр по умолчанию), или «LR» (left-&amp;gt;right), и определяет, сверху-вниз, или справа-налево, нужно располагать узлы графа. Вот пестрый пример:&lt;br /&gt;
&lt;br /&gt;
 digraph G{&lt;br /&gt;
  rankdir=LR;&lt;br /&gt;
  node[color=&amp;quot;red&amp;quot;,fontsize=14];&lt;br /&gt;
  edge[color=&amp;quot;darkgreen&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,fontsize=12];&lt;br /&gt;
  OPEN[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;filled&amp;quot;,fillcolor=&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
  CLOSED[shape=&amp;quot;octagon&amp;quot;,label=&amp;quot;Финиш&amp;quot;];&lt;br /&gt;
  VERIFIED[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;rounded&amp;quot;];&lt;br /&gt;
  OPEN-&amp;gt;RESOLVED-&amp;gt;VERIFIED-&amp;gt;CLOSED;&lt;br /&gt;
  OPEN-&amp;gt;CLOSED[style=&amp;quot;bold&amp;quot;];&lt;br /&gt;
  VERIFIED-&amp;gt;OPEN[label=&amp;quot;обнаружены ошибки&amp;quot;,style=&amp;quot;dashed&amp;quot;,arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
на выходе будет&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
   rankdir=LR;&lt;br /&gt;
  node[color=&amp;quot;red&amp;quot;,fontsize=14];&lt;br /&gt;
  edge[color=&amp;quot;darkgreen&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,fontsize=12];&lt;br /&gt;
  OPEN[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;filled&amp;quot;,fillcolor=&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
  CLOSED[shape=&amp;quot;octagon&amp;quot;,label=&amp;quot;Финиш&amp;quot;];&lt;br /&gt;
  VERIFIED[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;rounded&amp;quot;];&lt;br /&gt;
  OPEN-&amp;gt;RESOLVED-&amp;gt;VERIFIED-&amp;gt;CLOSED;&lt;br /&gt;
  OPEN-&amp;gt;CLOSED[style=&amp;quot;bold&amp;quot;];&lt;br /&gt;
  VERIFIED-&amp;gt;OPEN[label=&amp;quot;обнаружены ошибки&amp;quot;,style=&amp;quot;dashed&amp;quot;,arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если предполагается, что граф будут не только просматривать через IE, но и печатать, то необходимо установить ширину картинки, иначе при печати картинка будет обрезана. Для этого следует задать внутри описания &lt;br /&gt;
 size=&amp;quot;6.7,15&amp;quot;;&lt;br /&gt;
Существенна только первая цифра. Число 6.7 подобрано эмпирически, оно обеспечивает печать полной картинки при настройках IE по умолчанию.&lt;br /&gt;
&lt;br /&gt;
= Уровни в графах = &lt;br /&gt;
&lt;br /&gt;
В «Dot» присутствует возможность связать узлы графа не только стрелками, но и уровнями отображения, что позволяет создавать шкалу и располагать узлы графа соответственно данной шкале. Для связывания используется следующая конструкция:&lt;br /&gt;
   { rank = same; &amp;quot;элемент уровня&amp;quot;; &amp;quot;элемент для привязки 1&amp;quot;; &amp;quot;элемент для привязки 2&amp;quot;; ..}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Например, при использовании следующей конструкции: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G{&lt;br /&gt;
   node[fontsize=9];&lt;br /&gt;
   { /* шкала месяцев*/&lt;br /&gt;
     node[shape=plaintext]; /* что бы не было видно рамок */&lt;br /&gt;
     edge[color=white] /* что бы не было видно стрелок */&lt;br /&gt;
     &amp;quot;март&amp;quot; -&amp;gt;  &amp;quot;июнь&amp;quot; -&amp;gt; &amp;quot;сентябрь&amp;quot; -&amp;gt; &amp;quot;декабрь&amp;quot;; &lt;br /&gt;
   }&lt;br /&gt;
   { rank = same; &amp;quot;март&amp;quot;; &amp;quot;весна&amp;quot;; &amp;quot;a&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;июнь&amp;quot;; &amp;quot;лето&amp;quot;;}&lt;br /&gt;
   { rank = same; &amp;quot;сентябрь&amp;quot;; &amp;quot;осень&amp;quot;; &amp;quot;d&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;декабрь&amp;quot;; &amp;quot;зима&amp;quot;; &amp;quot;e&amp;quot;}&lt;br /&gt;
   &amp;quot;весна&amp;quot; -&amp;gt; &amp;quot;лето&amp;quot; -&amp;gt; &amp;quot;осень&amp;quot; -&amp;gt; &amp;quot;зима&amp;quot; -&amp;gt; &amp;quot;весна&amp;quot;&lt;br /&gt;
   &amp;quot;a&amp;quot; -&amp;gt; &amp;quot;b&amp;quot; -&amp;gt; &amp;quot;c&amp;quot; -&amp;gt; &amp;quot;d&amp;quot; -&amp;gt; &amp;quot;e&amp;quot; ;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
на выходе получается:&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
   node[fontsize=9];&lt;br /&gt;
   { /* шкала месяцев*/&lt;br /&gt;
     node[shape=plaintext]; /* что бы не было видно рамок */&lt;br /&gt;
     edge[color=white] /* что бы не было видно стрелок */&lt;br /&gt;
     &amp;quot;март&amp;quot; -&amp;gt;  &amp;quot;июнь&amp;quot; -&amp;gt; &amp;quot;сентябрь&amp;quot; -&amp;gt; &amp;quot;декабрь&amp;quot;; &lt;br /&gt;
   }&lt;br /&gt;
   { rank = same; &amp;quot;март&amp;quot;; &amp;quot;весна&amp;quot;; &amp;quot;a&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;июнь&amp;quot;; &amp;quot;лето&amp;quot;;}&lt;br /&gt;
   { rank = same; &amp;quot;сентябрь&amp;quot;; &amp;quot;осень&amp;quot;; &amp;quot;d&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;декабрь&amp;quot;; &amp;quot;зима&amp;quot;; &amp;quot;e&amp;quot;}&lt;br /&gt;
   &amp;quot;весна&amp;quot; -&amp;gt; &amp;quot;лето&amp;quot; -&amp;gt; &amp;quot;осень&amp;quot; -&amp;gt; &amp;quot;зима&amp;quot; -&amp;gt; &amp;quot;весна&amp;quot;&lt;br /&gt;
   &amp;quot;a&amp;quot; -&amp;gt; &amp;quot;b&amp;quot; -&amp;gt; &amp;quot;c&amp;quot; -&amp;gt; &amp;quot;d&amp;quot; -&amp;gt; &amp;quot;e&amp;quot; ;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Многосекционный узлы =&lt;br /&gt;
&lt;br /&gt;
Dot позволяет создавать многосекционные узлы при это каждая секция может быть поименована, и тогда ребра можно продоводить между секциями и узлами.&lt;br /&gt;
&lt;br /&gt;
Для включения режима многосекционности устанавливается атрибут узла shape.&lt;br /&gt;
 shape=record;&lt;br /&gt;
&lt;br /&gt;
Секции описываются в атрибуте label узла,  с помощью разделителя «|». Для именования секции ее имя указывается в &amp;lt;&amp;gt;. При описание ребра, исходящего или входящего в секцию, секция именуется следующим образом:&lt;br /&gt;
&lt;br /&gt;
 элемент:&amp;lt;имя_секции&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, из такого описания:&lt;br /&gt;
&lt;br /&gt;
 digraph structs {&lt;br /&gt;
   rankdir=HR;&lt;br /&gt;
   first [shape=record,label=&amp;quot;  x1\n all | { x21 | &amp;lt;f0&amp;gt; x22| x23} | x3&amp;quot; ];&lt;br /&gt;
   second [shape=record,label=&amp;quot; x22_1 | x22_2 | x22_3&amp;quot;];&lt;br /&gt;
   first:&amp;lt;f0&amp;gt; -&amp;gt; second;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Получается следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph structs {&lt;br /&gt;
   rankdir=HR;&lt;br /&gt;
   first [shape=record,label=&amp;quot;  x1\n all | { x21 | &amp;lt;f0&amp;gt; x22| x23} | x3&amp;quot; ];&lt;br /&gt;
   second [shape=record,label=&amp;quot; x22_1 | x22_2 | x22_3&amp;quot;];&lt;br /&gt;
   first:&amp;lt;f0&amp;gt; -&amp;gt; second;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Гиперссылки на графах =&lt;br /&gt;
&lt;br /&gt;
Можно использовать атрибут «URL», задавая относительные или абсолютные гиперссылки для узлов и ребер. Например&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G {&lt;br /&gt;
     rankdir=LR;&lt;br /&gt;
            SGML [URL=&amp;quot;SGML&amp;quot;];&lt;br /&gt;
            HTML [URL=&amp;quot;HTML&amp;quot;];&lt;br /&gt;
            XML [URL=&amp;quot;XML&amp;quot;];&lt;br /&gt;
            XHTML [URL=&amp;quot;http://www.w3schools.com/xhtml/&amp;quot;];&lt;br /&gt;
    SGML-&amp;gt;HTML;&lt;br /&gt;
    SGML-&amp;gt;XML;&lt;br /&gt;
    HTML-&amp;gt;XHTML;&lt;br /&gt;
    XML-&amp;gt;XHTML;&lt;br /&gt;
    SGML-&amp;gt;XHTML[color=&amp;quot;red&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,label=&amp;quot;ссылка на Google&amp;quot;,URL=&amp;quot;http://www.google.com&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G {&lt;br /&gt;
     rankdir=LR;&lt;br /&gt;
            SGML [URL=&amp;quot;SGML&amp;quot;];&lt;br /&gt;
            HTML [URL=&amp;quot;HTML&amp;quot;];&lt;br /&gt;
            XML [URL=&amp;quot;XML&amp;quot;];&lt;br /&gt;
            XHTML [URL=&amp;quot;http://www.w3schools.com/xhtml/&amp;quot;];&lt;br /&gt;
    SGML-&amp;gt;HTML;&lt;br /&gt;
    SGML-&amp;gt;XML;&lt;br /&gt;
    HTML-&amp;gt;XHTML;&lt;br /&gt;
    XML-&amp;gt;XHTML;&lt;br /&gt;
    SGML-&amp;gt;XHTML[color=&amp;quot;red&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,label=&amp;quot;ссылка на Google&amp;quot;,URL=&amp;quot;http://www.google.com&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Кластеры в графах = &lt;br /&gt;
&lt;br /&gt;
Программа «Dot» позволяет объединять узлы графов в кластеры для подчеркивания общности. &lt;br /&gt;
&lt;br /&gt;
Кластер описывается следующим синтаксисом:&lt;br /&gt;
 subgraph имя{&lt;br /&gt;
 свойство1 = &amp;quot;значение1&amp;quot;,свойство2=&amp;quot;значение2&amp;quot;,...&lt;br /&gt;
 узел1; &lt;br /&gt;
 узел2;&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
При этом ''имя'' подграфа должно начинаться с префикса '''cluster''', иначе подграф не позволяет себя отобразить на экран(раскраска, контур, подпись, .. ).&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
  digraph G {&lt;br /&gt;
   rankdir=LR;&lt;br /&gt;
   subgraph cluster0 {&lt;br /&gt;
        node [style=filled,color=white];&lt;br /&gt;
        style=filled;&lt;br /&gt;
        color=lightgrey;&lt;br /&gt;
        a0;&lt;br /&gt;
        a1&lt;br /&gt;
        label = &amp;quot;process #1&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   subgraph cluster1 {&lt;br /&gt;
        node [style=filled];&lt;br /&gt;
        b0;&lt;br /&gt;
        label = &amp;quot;process #2&amp;quot;;&lt;br /&gt;
        color=blue&lt;br /&gt;
   }&lt;br /&gt;
   start -&amp;gt; a0;&lt;br /&gt;
   start -&amp;gt; b0;&lt;br /&gt;
   a0 -&amp;gt; a1 -&amp;gt; end;&lt;br /&gt;
   b0 -&amp;gt; end;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G {&lt;br /&gt;
   rankdir=LR;&lt;br /&gt;
   subgraph cluster0 {&lt;br /&gt;
        node [style=filled,color=white];&lt;br /&gt;
        style=filled;&lt;br /&gt;
        color=lightgrey;&lt;br /&gt;
        a0;&lt;br /&gt;
        a1&lt;br /&gt;
        label = &amp;quot;process #1&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   subgraph cluster1 {&lt;br /&gt;
        node [style=filled];&lt;br /&gt;
        b0;&lt;br /&gt;
        label = &amp;quot;process #2&amp;quot;;&lt;br /&gt;
        color=blue&lt;br /&gt;
   }&lt;br /&gt;
   start -&amp;gt; a0;&lt;br /&gt;
   start -&amp;gt; b0;&lt;br /&gt;
   a0 -&amp;gt; a1 -&amp;gt; end;&lt;br /&gt;
   b0 -&amp;gt; end;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Цвета и черно-белая печать=&lt;br /&gt;
Graphviz позволяет использовать широкую цветовую палитру, однако, стоит не забывать, что контрастно выглядящие на цветном мониторе цвета, могут быть совершенно неразличимы после черно-белой печати. После проделанных экспериментов ({{Bug|11015}}), можно рекомендовать следующие палитры цветов (иллюстрированы на цвете ребер графа):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph-print&amp;gt;&lt;br /&gt;
digraph G{ rankdir=TB; size=&amp;quot;7,6&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 Палитра1-&amp;gt;goldenrod1 [color=goldenrod1]&lt;br /&gt;
 Палитра1-&amp;gt;green [color=green]&lt;br /&gt;
 Палитра1-&amp;gt;sienna4 [color=sienna4]&lt;br /&gt;
 Палитра1-&amp;gt;red1 [color=red1]&lt;br /&gt;
 Палитра1-&amp;gt;blue2 [color=blue2]&lt;br /&gt;
&lt;br /&gt;
 Палитра2-&amp;gt;lightcyan2 [color=lightcyan2]&lt;br /&gt;
 Палитра2-&amp;gt;pink2 [color=pink2]&lt;br /&gt;
 Палитра2-&amp;gt;green [color=green]&lt;br /&gt;
 Палитра2-&amp;gt;sienna4 [color=sienna4]&lt;br /&gt;
 Палитра2-&amp;gt;red2 [color=red2]&lt;br /&gt;
 Палитра2-&amp;gt;black1 [color=black1]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph-print&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Формы вершин =&lt;br /&gt;
&lt;br /&gt;
Перечислим палитру возможных форм вершин (узлов).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;neato&amp;gt;&lt;br /&gt;
digraph G{  &lt;br /&gt;
 edge [arrowtail=&amp;quot;none&amp;quot;]&lt;br /&gt;
 node [style=filled,  colorscheme=&amp;quot;brbg9&amp;quot;]; &lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;box&amp;quot;      [shape=&amp;quot;box&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;polygon&amp;quot;  [shape=&amp;quot;polygon&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;ellipse&amp;quot;  [shape=&amp;quot;ellipse&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
 &amp;quot;circle&amp;quot;  [shape=&amp;quot;circle&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
 &amp;quot;point&amp;quot;  [shape=&amp;quot;point&amp;quot;      fillcolor=&amp;quot;black&amp;quot;];&lt;br /&gt;
 &amp;quot;egg&amp;quot;  [shape=&amp;quot;egg&amp;quot;      fillcolor=&amp;quot;6&amp;quot;];&lt;br /&gt;
 &amp;quot;triangle&amp;quot;  [shape=&amp;quot;triangle&amp;quot;      fillcolor=&amp;quot;7&amp;quot;];&lt;br /&gt;
 &amp;quot;plaintext&amp;quot;  [shape=&amp;quot;plaintext&amp;quot;      fillcolor=&amp;quot;8&amp;quot;];&lt;br /&gt;
 &amp;quot;diamond&amp;quot;  [shape=&amp;quot;diamond&amp;quot;      fillcolor=&amp;quot;9&amp;quot;];&lt;br /&gt;
 &amp;quot;trapezium&amp;quot;  [shape=&amp;quot;trapezium&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;parallelogram&amp;quot;  [shape=&amp;quot;parallelogram&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;house&amp;quot;  [shape=&amp;quot;house&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
  &amp;quot;pentagon&amp;quot;  [shape=&amp;quot;pentagon&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
 &amp;quot;hexagon&amp;quot;  [shape=&amp;quot;hexagon&amp;quot;      fillcolor=&amp;quot;5&amp;quot;];&lt;br /&gt;
 &amp;quot;septagon&amp;quot;  [shape=&amp;quot;septagon&amp;quot;      fillcolor=&amp;quot;6&amp;quot;];&lt;br /&gt;
 &amp;quot;octagon&amp;quot;  [shape=&amp;quot;octagon&amp;quot;      fillcolor=&amp;quot;7&amp;quot;];&lt;br /&gt;
 &amp;quot;doublecircle&amp;quot;  [shape=&amp;quot;doublecircle&amp;quot;      fillcolor=&amp;quot;8&amp;quot;];&lt;br /&gt;
 &amp;quot;doubleoctagon&amp;quot;  [shape=&amp;quot;doubleoctagon&amp;quot;      fillcolor=&amp;quot;9&amp;quot;];&lt;br /&gt;
 &amp;quot;tripleoctagon&amp;quot;  [shape=&amp;quot;tripleoctagon&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;invtriangle&amp;quot;  [shape=&amp;quot;invtriangle&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;invtrapezium&amp;quot;  [shape=&amp;quot;invtrapezium&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;invhouse&amp;quot;  [shape=&amp;quot;invhouse&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
 &amp;quot;Mdiamond&amp;quot;  [shape=&amp;quot;Mdiamond&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
 &amp;quot;Msquare&amp;quot;  [shape=&amp;quot;Msquare&amp;quot;      fillcolor=&amp;quot;5&amp;quot;];&lt;br /&gt;
 &amp;quot;Mcircle&amp;quot;  [shape=&amp;quot;Mcircle&amp;quot;      fillcolor=&amp;quot;6&amp;quot;];&lt;br /&gt;
 &amp;quot;rect/rectangle&amp;quot;  [shape=&amp;quot;rect&amp;quot;      fillcolor=&amp;quot;7&amp;quot;];&lt;br /&gt;
 &amp;quot;none&amp;quot;  [shape=&amp;quot;none&amp;quot;      fillcolor=&amp;quot;8&amp;quot;];&lt;br /&gt;
 &amp;quot;note&amp;quot;  [shape=&amp;quot;note&amp;quot;      fillcolor=&amp;quot;9&amp;quot;];&lt;br /&gt;
 &amp;quot;tab&amp;quot;  [shape=&amp;quot;tab&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;folder&amp;quot;  [shape=&amp;quot;folder&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;box3d&amp;quot;  [shape=&amp;quot;box3d&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
 &amp;quot;component&amp;quot;  [shape=&amp;quot;component&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/neato&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Окончания ребер =&lt;br /&gt;
Можно задавать стиль офомления начала («arrowtail») и конца («arrowhead») дуг (ребер):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;circo&amp;gt;&lt;br /&gt;
digraph G{  &lt;br /&gt;
&lt;br /&gt;
 edge [arrowtail=&amp;quot;none&amp;quot;]&lt;br /&gt;
 A [label=&amp;quot;Arrowhead&amp;quot; style=filled fillcolor=&amp;quot;yellow&amp;quot;];&lt;br /&gt;
 &lt;br /&gt;
  A-&amp;gt;&amp;quot;normal&amp;quot; [arrowhead=&amp;quot;normal&amp;quot;];&lt;br /&gt;
  A-&amp;gt;&amp;quot;dot&amp;quot; [arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
  A-&amp;gt;&amp;quot;odot&amp;quot; [arrowhead=&amp;quot;odot&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;none&amp;quot; [arrowhead=&amp;quot;none&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;empty&amp;quot; [arrowhead=&amp;quot;empty&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;diamond&amp;quot; [arrowhead=&amp;quot;diamond&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;ediamond&amp;quot; [arrowhead=&amp;quot;ediamond&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;box&amp;quot; [arrowhead=&amp;quot;box&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;open&amp;quot; [arrowhead=&amp;quot;open&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;vee&amp;quot; [arrowhead=&amp;quot;vee&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;inv&amp;quot; [arrowhead=&amp;quot;inv&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;invdot&amp;quot; [arrowhead=&amp;quot;invdot&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;invodot&amp;quot; [arrowhead=&amp;quot;invodot&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;tee&amp;quot; [arrowhead=&amp;quot;tee&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;invempty&amp;quot; [arrowhead=&amp;quot;invempty&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;odiamond&amp;quot; [arrowhead=&amp;quot;odiamond&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;crow&amp;quot; [arrowhead=&amp;quot;crow&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;obox&amp;quot; [arrowhead=&amp;quot;obox&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;halfopen&amp;quot; [arrowhead=&amp;quot;halfopen&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/circo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Неориентированные графы =&lt;br /&gt;
Наряду с рисованием ориентированных графов, есть несколько методов для автоматического рисования неориентированных графов (будем рассматривать их на примере несложной ER-диаграммы).&lt;br /&gt;
&lt;br /&gt;
В отличие от автоматического рисования направленных («directed») графов, основанных на ранговой модели, есть несколько подходов к раскладке ненаправленных графов.&lt;br /&gt;
&lt;br /&gt;
== Graph ==&lt;br /&gt;
Ненаправленный граф можно нарисовать с помощью рангового подхода (несмотря на ненаправленность ребер) — будет использоваться программа «dot». Как это будет выглядеть для простой ER-диаграммы, можно увидеть ниже.&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
  node [fontsize=12];&lt;br /&gt;
  node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
  label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by DOT&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Очевидна неоптимальность такого подхода для неориентированных графов.&lt;br /&gt;
&lt;br /&gt;
== Neato ==&lt;br /&gt;
&lt;br /&gt;
Метод «neato» использует «энергетическую» (''spring'') модель, по сути, близкую к методу искуственного отжига — начиная с некоторого состояния вершины перемещаются, чтобы минимизировать некую потенциальную энергию. Рекомендуем для ненаправленных графов общего вида.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;neato&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
 node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
  institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by NEATO&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/neato&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FDP ==&lt;br /&gt;
Метод «fdp» по сути, близок к методу «neato», и использует другую разновидность «энергетического» («spring») подхода. Также рекомендуется для ненаправленных графов общего типа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;fdp&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
 node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by FDP&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/fdp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Twopi ==&lt;br /&gt;
&lt;br /&gt;
Метод «twopi» рисует графы с радиальной раскладкой. По сути одна вершина выбирается центральной, и помещается в центр, а остальные размещаются на последовательности концентрических орбит, вокруг этой вершины. Т.е. все вершины на расстоянии в «одно ребро» от центра, лежат на первой орбите, «в два ребра» — на второй и т. д.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;twopi&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 &lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
  node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by TWOPI&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/twopi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CIRCO ==&lt;br /&gt;
&lt;br /&gt;
Метод «circo» использует «circular layout». Выделяются двусвязные компоненты (каждая вершина имеет по крайней мере два ребра) и вершины этих компонент рисуются на некотором круге. «Дополнительные» ребра рисуются радиально и далее процесс повторяется. Пересечение ребер внутри круга минимизируется максимально возможным выносом ребер с круга за его периметр. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;circo&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
 node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by CIRCO&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/circo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Версии для печати =&lt;br /&gt;
Как известно, трудно добиться хорошего результата одновременно на экране и на принтере, в силу разных разрешений. Картинка экранного разрешения будет плохо (с «зазубринами») выглядеть на принтере, а картинка печатного разрешения, будет очень плохо выглядеть на экране (к сожалению, современные броузеры выполняют очень примитивный ресайзинг картинок при показе), и будет достаточно много «весить». Все соображения о печатных картинках также относятся к случаю, когда вы переносите (например, копируя вебстраницу из броузера через клипборд) содержимое MediaWiki-статьи в MS Word или другой текстовый редактор.&lt;br /&gt;
Для такого, «печатного» случая (т. е. если у вас не примитивные графы, и вы собираетесь их печатать или переносить в другую систему верстки), мы сделали «печатную версию» всех перечисленных графов, с разрешением около 200 DPI. Для этого надо использовать те же самые тэги с постфиксом «-print», например «graph-print»,«neato-print», и т.п.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph-print&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
  rankdir=LR;&lt;br /&gt;
  node[color=&amp;quot;red&amp;quot;,fontsize=14];&lt;br /&gt;
  edge[color=&amp;quot;darkgreen&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,fontsize=12];&lt;br /&gt;
  OPEN[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;filled&amp;quot;,fillcolor=&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
  CLOSED[shape=&amp;quot;octagon&amp;quot;,label=&amp;quot;Финиш&amp;quot;];&lt;br /&gt;
  VERIFIED[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;rounded&amp;quot;];&lt;br /&gt;
  OPEN-&amp;gt;RESOLVED-&amp;gt;VERIFIED-&amp;gt;CLOSED;&lt;br /&gt;
  OPEN-&amp;gt;CLOSED[style=&amp;quot;bold&amp;quot;];&lt;br /&gt;
  VERIFIED-&amp;gt;OPEN[label=&amp;quot;обнаружены ошибки&amp;quot;,style=&amp;quot;dashed&amp;quot;,arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph-print&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Полученные картинки являются компромиссом, между весом, читаемостью на экране и читаемостью на бумаге.&lt;br /&gt;
Желательно не использовать для совершенно тривиальных графов, или графов, которых вы не собираетесь печатать.&lt;br /&gt;
&lt;br /&gt;
= Установка GraphViz =&lt;br /&gt;
== Установка на  MoWeS Portable ==&lt;br /&gt;
&lt;br /&gt;
[[MoWeS Portable]] - портативный вебсервер включающий [[PHP5]] и [[MySQL]] позволяющий установить [[MediaWiki]] 1.5.1 на локальный компьютер или USB флэшь-диск.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ссылки по MoWeS и GraphViz ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Installing_on_MoWeS_Portable_%28Windows%29 Описание MoWeS]&lt;br /&gt;
* [http://www.chsoftware.net/en/useware/mowes/mowes.htm Сайт разработчиков MoWeS]&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:GraphViz описание расширения GraphViz для МедиаВики]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:MscGen расширение MSGGen (блок-схемы)для МедиаВики]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Extension:GraphVizAndMSCGen расширения GraphViz и MSGGen для МедиаВики]&lt;br /&gt;
* [http://www.wikischool.de/wiki/WikiSchool:Graphviz немецкий сайт по Graphviz]&lt;br /&gt;
&lt;br /&gt;
= Ссылки и дополнительная документация =&lt;br /&gt;
&lt;br /&gt;
Онлайн-документация, +последние изменения, FAQ и прочее можно найти на домашней странице пакета&lt;br /&gt;
http://www.graphviz.org/Documentation.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Документирование]]&lt;br /&gt;
{{replicate-from-custiswiki-to-lib}}&lt;br /&gt;
{{replicate-from-custiswiki-to-all}}&lt;/div&gt;</summary>
		<author><name>Картограф</name></author>	</entry>

	<entry>
		<id>https://lib.custis.ru/index.php?title=Graphviz&amp;diff=11158</id>
		<title>Graphviz</title>
		<link rel="alternate" type="text/html" href="https://lib.custis.ru/index.php?title=Graphviz&amp;diff=11158"/>
				<updated>2009-09-01T06:45:56Z</updated>
		
		<summary type="html">&lt;p&gt;Картограф: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Graphviz''' — это разработанный специалистами лаборатории AT&amp;amp;T пакет утилит по автоматической визуализации графов, заданных в виде текстового описания. Пакет распространяется с открытыми исходными файлами и работает на всех операционных системах, включая Windows, Linux/Unix, Mac OS. Самой интересной программой пакета является «dot», автоматический визуализатор направленных графов, который принимает на вход текстовый файл со структурой графа, а на выходе формирует граф в виде графического, векторного или текстового файла.&lt;br /&gt;
 &lt;br /&gt;
= Быстрый старт =&lt;br /&gt;
&lt;br /&gt;
Входной файл для программы «DOT» является обычным текстовым файлом на специальном языке разметки графа. Структура файла очень простая, например,&lt;br /&gt;
&lt;br /&gt;
 digraph G{ &lt;br /&gt;
  Рождение-&amp;gt;Юность-&amp;gt;Зрелость-&amp;gt;Старость-&amp;gt;Смерть;&lt;br /&gt;
  Юность-&amp;gt;Смерть;&lt;br /&gt;
  Зрелость-&amp;gt;Смерть;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
на выходе будет&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt; &lt;br /&gt;
 digraph G{&lt;br /&gt;
      Рождение-&amp;gt;Юность-&amp;gt;Зрелость-&amp;gt;Старость-&amp;gt;Смерть;&lt;br /&gt;
      Юность-&amp;gt;Смерть;&lt;br /&gt;
      Зрелость-&amp;gt;Смерть;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Программа «Dot» сама распознает все связи графа и упорядочит его таким образом, чтобы было наименьшее количество пересечений.&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать «dot»-графы в [[{{SITENAME}}]], используйте следующий синтаксис:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{ &lt;br /&gt;
  Рождение-&amp;gt;Юность-&amp;gt;Зрелость-&amp;gt;Старость-&amp;gt;Смерть;&lt;br /&gt;
  Юность-&amp;gt;Смерть;&lt;br /&gt;
  Зрелость-&amp;gt;Смерть;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если у вас узлы поименованы словосочетаниями, заключите их в кавычки, т. е.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
  &amp;quot;Полет фантазии&amp;quot;-&amp;gt;&amp;quot;Расход горючего&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поздравляем! Теперь вы способны рисовать графы в [[{{SITENAME}}]]. Остальной текст будет посвящен некоторым тонкостям использования [[Graphviz]].&lt;br /&gt;
&lt;br /&gt;
= Внешний вид графа =&lt;br /&gt;
«Dot» позволяет изменять внешний вид графа. Например, можно изменять форму фигур (прямоугольники, овалы, круги, параллелограммы, многоугольники), цвет и шрифт текста, цвет фона фигур, стиль стрелок и рамок фигур, подписи стрелок и т. д.&lt;br /&gt;
Итак, основные объектами являются узлы («node») и ребра («edge»). Для того, чтобы настроить свойства всех узлов или ребер нужно вначале использовать команды&lt;br /&gt;
 node[свойство1=&amp;quot;значение1&amp;quot;,свойство2=&amp;quot;значение2&amp;quot;,...]&lt;br /&gt;
 edge[свойство1=&amp;quot;значение1&amp;quot;,свойство2=&amp;quot;значение2&amp;quot;,...]&lt;br /&gt;
Также (в квадратных скобках после описания объекта) можно изменять настройки конкретного узла или ребра. Параметры графа, просто задаются в виде &amp;lt;tt&amp;gt;параметр=значение&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Полезно запомнить параметр «rankdir», он может быть «TB» (top-&amp;gt;bottom, параметр по умолчанию), или «LR» (left-&amp;gt;right), и определяет, сверху-вниз, или справа-налево, нужно располагать узлы графа. Вот пестрый пример:&lt;br /&gt;
&lt;br /&gt;
 digraph G{&lt;br /&gt;
  rankdir=LR;&lt;br /&gt;
  node[color=&amp;quot;red&amp;quot;,fontsize=14];&lt;br /&gt;
  edge[color=&amp;quot;darkgreen&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,fontsize=12];&lt;br /&gt;
  OPEN[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;filled&amp;quot;,fillcolor=&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
  CLOSED[shape=&amp;quot;octagon&amp;quot;,label=&amp;quot;Финиш&amp;quot;];&lt;br /&gt;
  VERIFIED[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;rounded&amp;quot;];&lt;br /&gt;
  OPEN-&amp;gt;RESOLVED-&amp;gt;VERIFIED-&amp;gt;CLOSED;&lt;br /&gt;
  OPEN-&amp;gt;CLOSED[style=&amp;quot;bold&amp;quot;];&lt;br /&gt;
  VERIFIED-&amp;gt;OPEN[label=&amp;quot;обнаружены ошибки&amp;quot;,style=&amp;quot;dashed&amp;quot;,arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
на выходе будет&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
   rankdir=LR;&lt;br /&gt;
  node[color=&amp;quot;red&amp;quot;,fontsize=14];&lt;br /&gt;
  edge[color=&amp;quot;darkgreen&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,fontsize=12];&lt;br /&gt;
  OPEN[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;filled&amp;quot;,fillcolor=&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
  CLOSED[shape=&amp;quot;octagon&amp;quot;,label=&amp;quot;Финиш&amp;quot;];&lt;br /&gt;
  VERIFIED[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;rounded&amp;quot;];&lt;br /&gt;
  OPEN-&amp;gt;RESOLVED-&amp;gt;VERIFIED-&amp;gt;CLOSED;&lt;br /&gt;
  OPEN-&amp;gt;CLOSED[style=&amp;quot;bold&amp;quot;];&lt;br /&gt;
  VERIFIED-&amp;gt;OPEN[label=&amp;quot;обнаружены ошибки&amp;quot;,style=&amp;quot;dashed&amp;quot;,arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если предполагается, что граф будут не только просматривать через IE, но и печатать, то необходимо установить ширину картинки, иначе при печати картинка будет обрезана. Для этого следует задать внутри описания &lt;br /&gt;
 size=&amp;quot;6.7,15&amp;quot;;&lt;br /&gt;
Существенна только первая цифра. Число 6.7 подобрано эмпирически, оно обеспечивает печать полной картинки при настройках IE по умолчанию.&lt;br /&gt;
&lt;br /&gt;
= Уровни в графах = &lt;br /&gt;
&lt;br /&gt;
В «Dot» присутствует возможность связать узлы графа не только стрелками, но и уровнями отображения, что позволяет создавать шкалу и располагать узлы графа соответственно данной шкале. Для связывания используется следующая конструкция:&lt;br /&gt;
   { rank = same; &amp;quot;элемент уровня&amp;quot;; &amp;quot;элемент для привязки 1&amp;quot;; &amp;quot;элемент для привязки 2&amp;quot;; ..}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Например, при использовании следующей конструкции: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G{&lt;br /&gt;
   node[fontsize=9];&lt;br /&gt;
   { /* шкала месяцев*/&lt;br /&gt;
     node[shape=plaintext]; /* что бы не было видно рамок */&lt;br /&gt;
     edge[color=white] /* что бы не было видно стрелок */&lt;br /&gt;
     &amp;quot;март&amp;quot; -&amp;gt;  &amp;quot;июнь&amp;quot; -&amp;gt; &amp;quot;сентябрь&amp;quot; -&amp;gt; &amp;quot;декабрь&amp;quot;; &lt;br /&gt;
   }&lt;br /&gt;
   { rank = same; &amp;quot;март&amp;quot;; &amp;quot;весна&amp;quot;; &amp;quot;a&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;июнь&amp;quot;; &amp;quot;лето&amp;quot;;}&lt;br /&gt;
   { rank = same; &amp;quot;сентябрь&amp;quot;; &amp;quot;осень&amp;quot;; &amp;quot;d&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;декабрь&amp;quot;; &amp;quot;зима&amp;quot;; &amp;quot;e&amp;quot;}&lt;br /&gt;
   &amp;quot;весна&amp;quot; -&amp;gt; &amp;quot;лето&amp;quot; -&amp;gt; &amp;quot;осень&amp;quot; -&amp;gt; &amp;quot;зима&amp;quot; -&amp;gt; &amp;quot;весна&amp;quot;&lt;br /&gt;
   &amp;quot;a&amp;quot; -&amp;gt; &amp;quot;b&amp;quot; -&amp;gt; &amp;quot;c&amp;quot; -&amp;gt; &amp;quot;d&amp;quot; -&amp;gt; &amp;quot;e&amp;quot; ;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
на выходе получается:&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
   node[fontsize=9];&lt;br /&gt;
   { /* шкала месяцев*/&lt;br /&gt;
     node[shape=plaintext]; /* что бы не было видно рамок */&lt;br /&gt;
     edge[color=white] /* что бы не было видно стрелок */&lt;br /&gt;
     &amp;quot;март&amp;quot; -&amp;gt;  &amp;quot;июнь&amp;quot; -&amp;gt; &amp;quot;сентябрь&amp;quot; -&amp;gt; &amp;quot;декабрь&amp;quot;; &lt;br /&gt;
   }&lt;br /&gt;
   { rank = same; &amp;quot;март&amp;quot;; &amp;quot;весна&amp;quot;; &amp;quot;a&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;июнь&amp;quot;; &amp;quot;лето&amp;quot;;}&lt;br /&gt;
   { rank = same; &amp;quot;сентябрь&amp;quot;; &amp;quot;осень&amp;quot;; &amp;quot;d&amp;quot;; }&lt;br /&gt;
   { rank = same; &amp;quot;декабрь&amp;quot;; &amp;quot;зима&amp;quot;; &amp;quot;e&amp;quot;}&lt;br /&gt;
   &amp;quot;весна&amp;quot; -&amp;gt; &amp;quot;лето&amp;quot; -&amp;gt; &amp;quot;осень&amp;quot; -&amp;gt; &amp;quot;зима&amp;quot; -&amp;gt; &amp;quot;весна&amp;quot;&lt;br /&gt;
   &amp;quot;a&amp;quot; -&amp;gt; &amp;quot;b&amp;quot; -&amp;gt; &amp;quot;c&amp;quot; -&amp;gt; &amp;quot;d&amp;quot; -&amp;gt; &amp;quot;e&amp;quot; ;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Многосекционный узлы =&lt;br /&gt;
&lt;br /&gt;
Dot позволяет создавать многосекционные узлы при это каждая секция может быть поименована, и тогда ребра можно продоводить между секциями и узлами.&lt;br /&gt;
&lt;br /&gt;
Для включения режима многосекционности устанавливается атрибут узла shape.&lt;br /&gt;
 shape=record;&lt;br /&gt;
&lt;br /&gt;
Секции описываются в атрибуте label узла,  с помощью разделителя «|». Для именования секции ее имя указывается в &amp;lt;&amp;gt;. При описание ребра, исходящего или входящего в секцию, секция именуется следующим образом:&lt;br /&gt;
&lt;br /&gt;
 элемент:&amp;lt;имя_секции&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, из такого описания:&lt;br /&gt;
&lt;br /&gt;
 digraph structs {&lt;br /&gt;
   rankdir=HR;&lt;br /&gt;
   first [shape=record,label=&amp;quot;  x1\n all | { x21 | &amp;lt;f0&amp;gt; x22| x23} | x3&amp;quot; ];&lt;br /&gt;
   second [shape=record,label=&amp;quot; x22_1 | x22_2 | x22_3&amp;quot;];&lt;br /&gt;
   first:&amp;lt;f0&amp;gt; -&amp;gt; second;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Получается следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph structs {&lt;br /&gt;
   rankdir=HR;&lt;br /&gt;
   first [shape=record,label=&amp;quot;  x1\n all | { x21 | &amp;lt;f0&amp;gt; x22| x23} | x3&amp;quot; ];&lt;br /&gt;
   second [shape=record,label=&amp;quot; x22_1 | x22_2 | x22_3&amp;quot;];&lt;br /&gt;
   first:&amp;lt;f0&amp;gt; -&amp;gt; second;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Гиперссылки на графах =&lt;br /&gt;
&lt;br /&gt;
Можно использовать атрибут «URL», задавая относительные или абсолютные гиперссылки для узлов и ребер. Например&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G {&lt;br /&gt;
     rankdir=LR;&lt;br /&gt;
            SGML [URL=&amp;quot;SGML&amp;quot;];&lt;br /&gt;
            HTML [URL=&amp;quot;HTML&amp;quot;];&lt;br /&gt;
            XML [URL=&amp;quot;XML&amp;quot;];&lt;br /&gt;
            XHTML [URL=&amp;quot;http://www.w3schools.com/xhtml/&amp;quot;];&lt;br /&gt;
    SGML-&amp;gt;HTML;&lt;br /&gt;
    SGML-&amp;gt;XML;&lt;br /&gt;
    HTML-&amp;gt;XHTML;&lt;br /&gt;
    XML-&amp;gt;XHTML;&lt;br /&gt;
    SGML-&amp;gt;XHTML[color=&amp;quot;red&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,label=&amp;quot;ссылка на Google&amp;quot;,URL=&amp;quot;http://www.google.com&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/graph&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G {&lt;br /&gt;
     rankdir=LR;&lt;br /&gt;
            SGML [URL=&amp;quot;SGML&amp;quot;];&lt;br /&gt;
            HTML [URL=&amp;quot;HTML&amp;quot;];&lt;br /&gt;
            XML [URL=&amp;quot;XML&amp;quot;];&lt;br /&gt;
            XHTML [URL=&amp;quot;http://www.w3schools.com/xhtml/&amp;quot;];&lt;br /&gt;
    SGML-&amp;gt;HTML;&lt;br /&gt;
    SGML-&amp;gt;XML;&lt;br /&gt;
    HTML-&amp;gt;XHTML;&lt;br /&gt;
    XML-&amp;gt;XHTML;&lt;br /&gt;
    SGML-&amp;gt;XHTML[color=&amp;quot;red&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,label=&amp;quot;ссылка на Google&amp;quot;,URL=&amp;quot;http://www.google.com&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Кластеры в графах = &lt;br /&gt;
&lt;br /&gt;
Программа «Dot» позволяет объединять узлы графов в кластеры для подчеркивания общности. &lt;br /&gt;
&lt;br /&gt;
Кластер описывается следующим синтаксисом:&lt;br /&gt;
 subgraph имя{&lt;br /&gt;
 свойство1 = &amp;quot;значение1&amp;quot;,свойство2=&amp;quot;значение2&amp;quot;,...&lt;br /&gt;
 узел1; &lt;br /&gt;
 узел2;&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
При этом ''имя'' подграфа должно начинаться с префикса '''cluster''', иначе подграф не позволяет себя отобразить на экран(раскраска, контур, подпись, .. ).&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
  digraph G {&lt;br /&gt;
   rankdir=LR;&lt;br /&gt;
   subgraph cluster0 {&lt;br /&gt;
        node [style=filled,color=white];&lt;br /&gt;
        style=filled;&lt;br /&gt;
        color=lightgrey;&lt;br /&gt;
        a0;&lt;br /&gt;
        a1&lt;br /&gt;
        label = &amp;quot;process #1&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   subgraph cluster1 {&lt;br /&gt;
        node [style=filled];&lt;br /&gt;
        b0;&lt;br /&gt;
        label = &amp;quot;process #2&amp;quot;;&lt;br /&gt;
        color=blue&lt;br /&gt;
   }&lt;br /&gt;
   start -&amp;gt; a0;&lt;br /&gt;
   start -&amp;gt; b0;&lt;br /&gt;
   a0 -&amp;gt; a1 -&amp;gt; end;&lt;br /&gt;
   b0 -&amp;gt; end;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
 digraph G {&lt;br /&gt;
   rankdir=LR;&lt;br /&gt;
   subgraph cluster0 {&lt;br /&gt;
        node [style=filled,color=white];&lt;br /&gt;
        style=filled;&lt;br /&gt;
        color=lightgrey;&lt;br /&gt;
        a0;&lt;br /&gt;
        a1&lt;br /&gt;
        label = &amp;quot;process #1&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   subgraph cluster1 {&lt;br /&gt;
        node [style=filled];&lt;br /&gt;
        b0;&lt;br /&gt;
        label = &amp;quot;process #2&amp;quot;;&lt;br /&gt;
        color=blue&lt;br /&gt;
   }&lt;br /&gt;
   start -&amp;gt; a0;&lt;br /&gt;
   start -&amp;gt; b0;&lt;br /&gt;
   a0 -&amp;gt; a1 -&amp;gt; end;&lt;br /&gt;
   b0 -&amp;gt; end;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Цвета и черно-белая печать=&lt;br /&gt;
Graphviz позволяет использовать широкую цветовую палитру, однако, стоит не забывать, что контрастно выглядящие на цветном мониторе цвета, могут быть совершенно неразличимы после черно-белой печати. После проделанных экспериментов ({{Bug|11015}}), можно рекомендовать следующие палитры цветов (иллюстрированы на цвете ребер графа):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph-print&amp;gt;&lt;br /&gt;
digraph G{ rankdir=TB; size=&amp;quot;7,6&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 Палитра1-&amp;gt;goldenrod1 [color=goldenrod1]&lt;br /&gt;
 Палитра1-&amp;gt;green [color=green]&lt;br /&gt;
 Палитра1-&amp;gt;sienna4 [color=sienna4]&lt;br /&gt;
 Палитра1-&amp;gt;red1 [color=red1]&lt;br /&gt;
 Палитра1-&amp;gt;blue2 [color=blue2]&lt;br /&gt;
&lt;br /&gt;
 Палитра2-&amp;gt;lightcyan2 [color=lightcyan2]&lt;br /&gt;
 Палитра2-&amp;gt;pink2 [color=pink2]&lt;br /&gt;
 Палитра2-&amp;gt;green [color=green]&lt;br /&gt;
 Палитра2-&amp;gt;sienna4 [color=sienna4]&lt;br /&gt;
 Палитра2-&amp;gt;red2 [color=red2]&lt;br /&gt;
 Палитра2-&amp;gt;black1 [color=black1]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph-print&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Формы вершин =&lt;br /&gt;
&lt;br /&gt;
Перечислим палитру возможных форм вершин (узлов).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;neato&amp;gt;&lt;br /&gt;
digraph G{  &lt;br /&gt;
 edge [arrowtail=&amp;quot;none&amp;quot;]&lt;br /&gt;
 node [style=filled,  colorscheme=&amp;quot;brbg9&amp;quot;]; &lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;box&amp;quot;      [shape=&amp;quot;box&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;polygon&amp;quot;  [shape=&amp;quot;polygon&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;ellipse&amp;quot;  [shape=&amp;quot;ellipse&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
 &amp;quot;circle&amp;quot;  [shape=&amp;quot;circle&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
 &amp;quot;point&amp;quot;  [shape=&amp;quot;point&amp;quot;      fillcolor=&amp;quot;black&amp;quot;];&lt;br /&gt;
 &amp;quot;egg&amp;quot;  [shape=&amp;quot;egg&amp;quot;      fillcolor=&amp;quot;6&amp;quot;];&lt;br /&gt;
 &amp;quot;triangle&amp;quot;  [shape=&amp;quot;triangle&amp;quot;      fillcolor=&amp;quot;7&amp;quot;];&lt;br /&gt;
 &amp;quot;plaintext&amp;quot;  [shape=&amp;quot;plaintext&amp;quot;      fillcolor=&amp;quot;8&amp;quot;];&lt;br /&gt;
 &amp;quot;diamond&amp;quot;  [shape=&amp;quot;diamond&amp;quot;      fillcolor=&amp;quot;9&amp;quot;];&lt;br /&gt;
 &amp;quot;trapezium&amp;quot;  [shape=&amp;quot;trapezium&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;parallelogram&amp;quot;  [shape=&amp;quot;parallelogram&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;house&amp;quot;  [shape=&amp;quot;house&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
  &amp;quot;pentagon&amp;quot;  [shape=&amp;quot;pentagon&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
 &amp;quot;hexagon&amp;quot;  [shape=&amp;quot;hexagon&amp;quot;      fillcolor=&amp;quot;5&amp;quot;];&lt;br /&gt;
 &amp;quot;septagon&amp;quot;  [shape=&amp;quot;septagon&amp;quot;      fillcolor=&amp;quot;6&amp;quot;];&lt;br /&gt;
 &amp;quot;octagon&amp;quot;  [shape=&amp;quot;octagon&amp;quot;      fillcolor=&amp;quot;7&amp;quot;];&lt;br /&gt;
 &amp;quot;doublecircle&amp;quot;  [shape=&amp;quot;doublecircle&amp;quot;      fillcolor=&amp;quot;8&amp;quot;];&lt;br /&gt;
 &amp;quot;doubleoctagon&amp;quot;  [shape=&amp;quot;doubleoctagon&amp;quot;      fillcolor=&amp;quot;9&amp;quot;];&lt;br /&gt;
 &amp;quot;tripleoctagon&amp;quot;  [shape=&amp;quot;tripleoctagon&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;invtriangle&amp;quot;  [shape=&amp;quot;invtriangle&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;invtrapezium&amp;quot;  [shape=&amp;quot;invtrapezium&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;invhouse&amp;quot;  [shape=&amp;quot;invhouse&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
 &amp;quot;Mdiamond&amp;quot;  [shape=&amp;quot;Mdiamond&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
 &amp;quot;Msquare&amp;quot;  [shape=&amp;quot;Msquare&amp;quot;      fillcolor=&amp;quot;5&amp;quot;];&lt;br /&gt;
 &amp;quot;Mcircle&amp;quot;  [shape=&amp;quot;Mcircle&amp;quot;      fillcolor=&amp;quot;6&amp;quot;];&lt;br /&gt;
 &amp;quot;rect/rectangle&amp;quot;  [shape=&amp;quot;rect&amp;quot;      fillcolor=&amp;quot;7&amp;quot;];&lt;br /&gt;
 &amp;quot;none&amp;quot;  [shape=&amp;quot;none&amp;quot;      fillcolor=&amp;quot;8&amp;quot;];&lt;br /&gt;
 &amp;quot;note&amp;quot;  [shape=&amp;quot;note&amp;quot;      fillcolor=&amp;quot;9&amp;quot;];&lt;br /&gt;
 &amp;quot;tab&amp;quot;  [shape=&amp;quot;tab&amp;quot;      fillcolor=&amp;quot;1&amp;quot;];&lt;br /&gt;
 &amp;quot;folder&amp;quot;  [shape=&amp;quot;folder&amp;quot;      fillcolor=&amp;quot;2&amp;quot;];&lt;br /&gt;
 &amp;quot;box3d&amp;quot;  [shape=&amp;quot;box3d&amp;quot;      fillcolor=&amp;quot;3&amp;quot;];&lt;br /&gt;
 &amp;quot;component&amp;quot;  [shape=&amp;quot;component&amp;quot;      fillcolor=&amp;quot;4&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/neato&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Окончания ребер =&lt;br /&gt;
Можно задавать стиль офомления начала («arrowtail») и конца («arrowhead») дуг (ребер):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;circo&amp;gt;&lt;br /&gt;
digraph G{  &lt;br /&gt;
&lt;br /&gt;
 edge [arrowtail=&amp;quot;none&amp;quot;]&lt;br /&gt;
 A [label=&amp;quot;Arrowhead&amp;quot; style=filled fillcolor=&amp;quot;yellow&amp;quot;];&lt;br /&gt;
 &lt;br /&gt;
  A-&amp;gt;&amp;quot;normal&amp;quot; [arrowhead=&amp;quot;normal&amp;quot;];&lt;br /&gt;
  A-&amp;gt;&amp;quot;dot&amp;quot; [arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
  A-&amp;gt;&amp;quot;odot&amp;quot; [arrowhead=&amp;quot;odot&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;none&amp;quot; [arrowhead=&amp;quot;none&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;empty&amp;quot; [arrowhead=&amp;quot;empty&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;diamond&amp;quot; [arrowhead=&amp;quot;diamond&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;ediamond&amp;quot; [arrowhead=&amp;quot;ediamond&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;box&amp;quot; [arrowhead=&amp;quot;box&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;open&amp;quot; [arrowhead=&amp;quot;open&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;vee&amp;quot; [arrowhead=&amp;quot;vee&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;inv&amp;quot; [arrowhead=&amp;quot;inv&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;invdot&amp;quot; [arrowhead=&amp;quot;invdot&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;invodot&amp;quot; [arrowhead=&amp;quot;invodot&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;tee&amp;quot; [arrowhead=&amp;quot;tee&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;invempty&amp;quot; [arrowhead=&amp;quot;invempty&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;odiamond&amp;quot; [arrowhead=&amp;quot;odiamond&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;crow&amp;quot; [arrowhead=&amp;quot;crow&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;obox&amp;quot; [arrowhead=&amp;quot;obox&amp;quot;];&lt;br /&gt;
   A-&amp;gt;&amp;quot;halfopen&amp;quot; [arrowhead=&amp;quot;halfopen&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/circo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Неориентированные графы =&lt;br /&gt;
Наряду с рисованием ориентированных графов, есть несколько методов для автоматического рисования неориентированных графов (будем рассматривать их на примере несложной ER-диаграммы).&lt;br /&gt;
&lt;br /&gt;
В отличие от автоматического рисования направленных («directed») графов, основанных на ранговой модели, есть несколько подходов к раскладке ненаправленных графов.&lt;br /&gt;
&lt;br /&gt;
== Graph ==&lt;br /&gt;
Ненаправленный граф можно нарисовать с помощью рангового подхода (несмотря на ненаправленность ребер) — будет использоваться программа «dot». Как это будет выглядеть для простой ER-диаграммы, можно увидеть ниже.&lt;br /&gt;
&amp;lt;graph&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
  node [fontsize=12];&lt;br /&gt;
  node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
  label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by DOT&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Очевидна неоптимальность такого подхода для неориентированных графов.&lt;br /&gt;
&lt;br /&gt;
== Neato ==&lt;br /&gt;
&lt;br /&gt;
Метод «neato» использует «энергетическую» (''spring'') модель, по сути, близкую к методу искуственного отжига — начиная с некоторого состояния вершины перемещаются, чтобы минимизировать некую потенциальную энергию. Рекомендуем для ненаправленных графов общего вида.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;neato&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
 node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
  institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by NEATO&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/neato&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FDP ==&lt;br /&gt;
Метод «fdp» по сути, близок к методу «neato», и использует другую разновидность «энергетического» («spring») подхода. Также рекомендуется для ненаправленных графов общего типа.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;fdp&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
 node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by FDP&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/fdp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Twopi ==&lt;br /&gt;
&lt;br /&gt;
Метод «twopi» рисует графы с радиальной раскладкой. По сути одна вершина выбирается центральной, и помещается в центр, а остальные размещаются на последовательности концентрических орбит, вокруг этой вершины. Т.е. все вершины на расстоянии в «одно ребро» от центра, лежат на первой орбите, «в два ребра» — на второй и т. д.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;twopi&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 &lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
  node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by TWOPI&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/twopi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CIRCO ==&lt;br /&gt;
&lt;br /&gt;
Метод «circo» использует «circular layout». Выделяются двусвязные компоненты (каждая вершина имеет по крайней мере два ребра) и вершины этих компонент рисуются на некотором круге. «Дополнительные» ребра рисуются радиально и далее процесс повторяется. Пересечение ребер внутри круга минимизируется максимально возможным выносом ребер с круга за его периметр. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;circo&amp;gt;&lt;br /&gt;
graph ER&lt;br /&gt;
{&lt;br /&gt;
 node [fontsize=12];&lt;br /&gt;
 node [shape=box]; course; institute; student;&lt;br /&gt;
  node [shape=ellipse];&lt;br /&gt;
  {node [label=&amp;quot;name&amp;quot;] name0; name1; name2;}&lt;br /&gt;
  code; grade; number;&lt;br /&gt;
 node [shape=diamond,style=filled,color=lightgrey];&lt;br /&gt;
  &amp;quot;C-I&amp;quot;; &amp;quot;S-C&amp;quot;; &amp;quot;S-I&amp;quot;;&lt;br /&gt;
 name0 -- course;&lt;br /&gt;
 code -- course;&lt;br /&gt;
 course -- &amp;quot;C-I&amp;quot; [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;C-I&amp;quot; -- institute [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
  institute -- name1;&lt;br /&gt;
 institute -- &amp;quot;S-I&amp;quot; [label=&amp;quot;1&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-I&amp;quot; -- student [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 student -- grade;&lt;br /&gt;
 student -- name2;&lt;br /&gt;
 student -- number;&lt;br /&gt;
 student -- &amp;quot;S-C&amp;quot; [label=&amp;quot;m&amp;quot;,len=1.00];&lt;br /&gt;
 &amp;quot;S-C&amp;quot; -- course [label=&amp;quot;n&amp;quot;,len=1.00];&lt;br /&gt;
 label = &amp;quot;\n\nEntity Relation Diagram\ndrawn by CIRCO&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/circo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Версии для печати =&lt;br /&gt;
Как известно, трудно добиться хорошего результата одновременно на экране и на принтере, в силу разных разрешений. Картинка экранного разрешения будет плохо (с «зазубринами») выглядеть на принтере, а картинка печатного разрешения, будет очень плохо выглядеть на экране (к сожалению, современные броузеры выполняют очень примитивный ресайзинг картинок при показе), и будет достаточно много «весить». Все соображения о печатных картинках также относятся к случаю, когда вы переносите (например, копируя вебстраницу из броузера через клипборд) содержимое MediaWiki-статьи в MS Word или другой текстовый редактор.&lt;br /&gt;
Для такого, «печатного» случая (т. е. если у вас не примитивные графы, и вы собираетесь их печатать или переносить в другую систему верстки), мы сделали «печатную версию» всех перечисленных графов, с разрешением около 200 DPI. Для этого надо использовать те же самые тэги с постфиксом «-print», например «graph-print»,«neato-print», и т.п.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;graph-print&amp;gt;&lt;br /&gt;
digraph G{&lt;br /&gt;
  rankdir=LR;&lt;br /&gt;
  node[color=&amp;quot;red&amp;quot;,fontsize=14];&lt;br /&gt;
  edge[color=&amp;quot;darkgreen&amp;quot;,fontcolor=&amp;quot;blue&amp;quot;,fontsize=12];&lt;br /&gt;
  OPEN[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;filled&amp;quot;,fillcolor=&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
  CLOSED[shape=&amp;quot;octagon&amp;quot;,label=&amp;quot;Финиш&amp;quot;];&lt;br /&gt;
  VERIFIED[shape=&amp;quot;rectangle&amp;quot;,style=&amp;quot;rounded&amp;quot;];&lt;br /&gt;
  OPEN-&amp;gt;RESOLVED-&amp;gt;VERIFIED-&amp;gt;CLOSED;&lt;br /&gt;
  OPEN-&amp;gt;CLOSED[style=&amp;quot;bold&amp;quot;];&lt;br /&gt;
  VERIFIED-&amp;gt;OPEN[label=&amp;quot;обнаружены ошибки&amp;quot;,style=&amp;quot;dashed&amp;quot;,arrowhead=&amp;quot;dot&amp;quot;];&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/graph-print&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Полученные картинки являются компромиссом, между весом, читаемостью на экране и читаемостью на бумаге.&lt;br /&gt;
Желательно не использовать для совершенно тривиальных графов, или графов, которых вы не собираетесь печатать.&lt;br /&gt;
&lt;br /&gt;
= Установка GraphViz =&lt;br /&gt;
== Установка на  MoWeS Portable ==&lt;br /&gt;
&lt;br /&gt;
= Ссылки и дополнительная документация =&lt;br /&gt;
&lt;br /&gt;
Онлайн-документация, +последние изменения, FAQ и прочее можно найти на домашней странице пакета&lt;br /&gt;
http://www.graphviz.org/Documentation.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Документирование]]&lt;br /&gt;
{{replicate-from-custiswiki-to-lib}}&lt;br /&gt;
{{replicate-from-custiswiki-to-all}}&lt;/div&gt;</summary>
		<author><name>Картограф</name></author>	</entry>

	</feed>