Шаблон:Graphviz
{{Graphviz}} — шаблон для вывода графов на языке dot с помощью программы GraphViz, использующий функциональность расширения MediaWiki ExternalData.
Параметры:
- или
dot
— описание графа на языке dot. Если в описании присутсвует знак равенства, потребуется использовать синтаксис именованного параметра (1=
илиdot=
). Если имеется символ|
, его надо заменить на{{!}}
,
renderer
— алгоритм вывода графов:dot
,neato
,twopi
,circo
,fdp
,osage
,patchwork
илиsfdp
.
ПримерыПравить
Описание | Викитекст | Вывод |
---|---|---|
Простейший пример |
{{graphviz|id=Example1| digraph Example1{
Зачатие->Рождение->Юность->Зрелость->Старость->Смерть;
Зачатие->Аборт->Смерть;
Юность->Смерть;
Зрелость->Смерть;
} }} |
|
Dot с викиссылками |
{{graphviz|id=Example2| digraph Example2{
[[Зачатие]];[[Аборт]];[[Рождение]];[[Юность]];[[Зрелость]];[[Старость]];[[Смерть]];
Зачатие->Рождение->Юность->Зрелость->Старость->Смерть;
Зачатие->Аборт->Смерть;
Юность->Смерть;
Зрелость->Смерть;
} }} |
|
Многословные названия узлов в кавычках |
{{graphviz|id=Example3| digraph Example3{
"Полёт фантазии"->"Расход горючего";
} }} |
|
Граф со сложным форматированием на прозрачном фоне |
{{graphviz|1= digraph Example4{
graph [bgcolor="transparent"];
rankdir=LR;
node[color="red",fontsize=14];
edge[color="darkgreen",fontcolor="blue",fontsize=12];
OPEN[shape="rectangle",style="filled",fillcolor="lightgrey"];
CLOSED[shape="octagon",label="Финиш"];
VERIFIED[shape="rectangle",style="rounded"];
OPEN->RESOLVED->VERIFIED->CLOSED;
OPEN->CLOSED[style="bold"];
VERIFIED->OPEN[label="обнаружены ошибки",style="dashed",arrowhead="dot"];
} }} |
|
Позиционирование узлов |
{{graphviz|id=Example5|dot= digraph Example5{
node[fontsize=9];
{ /* шкала месяцев*/
node[shape=plaintext]; /* что бы не было видно рамок */
edge[color=white] /* что бы не было видно стрелок */
"март" -> "июнь" -> "сентябрь" -> "декабрь";
}
{ rank = same; "март"; "весна"; "a"; }
{ rank = same; "июнь"; "лето";}
{ rank = same; "сентябрь"; "осень"; "d"; }
{ rank = same; "декабрь"; "зима"; "e"}
"весна" -> "лето" -> "осень" -> "зима" -> "весна"
"a" -> "b" -> "c" -> "d" -> "e" ;
} }} |
|
Многосекционные узлы |
{{graphviz|id=Example6|dot= digraph Example6{
rankdir=HR;
first [shape=record,label=" x1\n all {{!}} { x21 {{!}} <f0> x22{{!}} x23} {{!}} x3" ];
second [shape=record,label=" x22_1 {{!}} x22_2 {{!}} x22_3"];
first:<f0> -> second;
} }} |
|
Кластеры |
{{graphviz|id=Example7|dot= digraph Example7 {
rankdir=LR;
subgraph cluster0 {
node [style=filled,color=white];
style=filled;
color=lightgrey;
a0;
a1
label = "process #1";
}
subgraph cluster1 {
node [style=filled];
b0;
label = "process #2";
color=blue
}
start -> a0;
start -> b0;
a0 -> a1 -> end;
b0 -> end;
} }} |
|
Палитра, оптимизированная для чёрно-белой печати |
{{graphviz|id=Example8|dot= digraph Example8{ rankdir=TB;
Палитра1->goldenrod [color=goldenrod]
Палитра1->green [color=green]
Палитра1->sienna [color=sienna]
Палитра1->red [color=red]
Палитра1->blue [color=blue]
Палитра2->lightcyan [color=lightcyan]
Палитра2->pink [color=pink]
Палитра2->green [color=green]
Палитра2->sienna [color=sienna]
Палитра2->red [color=red]
Палитра2->black [color=black]
} }} |
|
Неориентированный граф на dot |
{{graphviz|id=Example9|dot= graph Example9{
node [fontsize=12];
node [shape=box]; course; institute; student;
node [shape=ellipse];
{node [label="name"] name0; name1; name2;}
code; grade; number;
node [shape=diamond,style=filled,color=lightgrey];
"C-I"; "S-C"; "S-I";
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by DOT";
} }} |
|
Неориентированный граф на neato |
{{graphviz|id=Example10|renderer=neato|dot= graph Example10
{
node [fontsize=12];
node [shape=box]; course; institute; student;
node [shape=ellipse];
{node [label="name"] name0; name1; name2;}
code; grade; number;
node [shape=diamond,style=filled,color=lightgrey];
"C-I"; "S-C"; "S-I";
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by NEATO";
} }} |
|
Неориентированный граф на fdp |
{{graphviz|id=Example11|renderer=fdp|dot= graph Example11
{
node [fontsize=12];
node [shape=box]; course; institute; student;
node [shape=ellipse];
{node [label="name"] name0; name1; name2;}
code; grade; number;
node [shape=diamond,style=filled,color=lightgrey];
"C-I"; "S-C"; "S-I";
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by FDP";
} }} |
|
Неориентированный граф на twopi |
{{graphviz|id=Example12|renderer=twopi|dot= graph Example12{
node [fontsize=12];
node [shape=box]; course; institute; student;
node [shape=ellipse];
{node [label="name"] name0; name1; name2;}
code; grade; number;
node [shape=diamond,style=filled,color=lightgrey];
"C-I"; "S-C"; "S-I";
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by TWOPI";
} }} |
|
Неориентированный граф на circo |
{{graphviz|id=Example13|renderer=circo|dot= graph Example13{
node [fontsize=12];
node [shape=box]; course; institute; student;
node [shape=ellipse];
{node [label="name"] name0; name1; name2;}
code; grade; number;
node [shape=diamond,style=filled,color=lightgrey];
"C-I"; "S-C"; "S-I";
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by CIRCO";
} }} |
|
Настройки викиПравить
Для работы шаблон требует установки расширения MediaWiki Extension:ExternalData, программы GraphViz и настроек в LocalSettings.php
:
// GraphViz:
$edgExeName ['graphviz'] = 'GraphViz';
$edgExeUrl ['graphviz'] = 'https://graphviz.org/';
$edgExeCommand ['graphviz'] = 'dot -K$layout$ -Tsvg';
$edgExeParams ['graphviz'] = ['layout' => 'dot'];
$edgExeParamFilters ['graphviz'] = ['layout' => '/^dot|neato|twopi|circo|fdp|osage|patchwork|sfdp$/'];
$edgExeInput ['graphviz'] = 'dot';
$edgExePreprocess ['graphviz'] = 'EDConnectorExe::edfWikilinks4dot';
$edgExePostprocess ['graphviz'] = 'EDConnectorExe::edfExtractSVG';
$edgExeTags ['graphviz'] = 'graphviz';
СсылкиПравить
- http://www.graphviz.org/Documentation.php
- http://www.graphviz.org/content/dot-language
- http://lib.custis.ru/index.php/Graphviz
- Emden Gansner and Eleftherios Koutsofios and Stephen Nort «Drawing graphs with dot». — January 26 2006.