GraphViz is a way of representing structural information as diagrams of abstract graphs and networks. Automatic graph drawing has many important applications in software engineering, database and web design, networking, and in visual interfaces for many other domains.
This plugin uses Graphviz's applications to create an image of a directed graph. The directed graph is described using a simple text markup called "The DOT Language". This markup is written between<graphviz>
and </graphviz>
tags or using the %GRAPHVIZ
macro.
By default, an svg image attachment is created and displayed inline, replacing the <graphviz>
markup.
Visit the Graphviz gallery to see some
examples on what can be achieved with this plugin and Graphviz.
Full documentation is available at http://graphviz.org/Documentation.php.
There are two ways to specify a graph:
<graphviz>
xml tag
%GRAPHVIZ
Foswiki macro
Both can be used to generate a graph inline, that is by specifying the DOT language as part of the page. Below examples are mostly equivalent:
<graphviz renderer="dot" type="png"> digraph G {Hello[fontcolor="red"]; Hello->World} </graphviz>
%GRAPHVIZ{ "digraph G {Hello[fontcolor=\"red\"]; Hello->World}" renderer="dot" type="png" }%
Both should render as
when installed.
The<graphviz>
xml syntax has got the advantage of being in line with other wikis, such as dokuwiki. Also,
the DOT code does not have to escape any double-quotes ("
) as is the case using the Foswiki macro way.
However using a proper %GRAPHVIZ
macro has got the advantage of being well integrated into Foswiki's Topic Markup Language.
For instance it can be properly escaped when in a FormattedSearch.
For compatibility with DirectedGraphPlugin you may use <dot>
instead of <graphviz>
.
<graphviz [params]> … DOT code … <graphviz>
%GRAPHVIZ{" … DOT code … " [params]}%
Parameter | Description | Default |
---|---|---|
DOT code |
this is the graph specified in the graph description language | |
type="png|jpeg|gif|svg|svgz|pdf" |
output format | svg |
renderer="dot|neato|twopi|circle|fdp|sfdp|patchwork" |
rendering engine | dot |
topic="[web.]topic" |
specify the topic where to store the graph image | current topic |
file="..." |
filename to be generated | random based on content |
attachment=" … " |
attachment that may hold a .gv graph file (only available in %GRAPHVIZ ) |
|
section=" … " |
named section in topic that holds a graph description (only available in %GRAPHVIZ ) |
|
library="[web.]topic" |
specify the topic where to search for images to be used in the dot graph | topic |
inline="on|off" |
boolean flag to specify the way how to add an svg result to the html page; if inline="on" then an <svg> html tag is generated; otherwise an html <img … > tag is used; note that for properly linking URLs in the graphviz graph you will need to switch this on |
off |
expand="on|off" |
boolean flag, when switched on, will expand TML macros in the DOT code before rendering it | off |
style=" … " |
css styles to be added to the output | |
width=" … " |
width of the image result | |
height=" … " |
height of the image result |
Instead of having to learn the dot language, nodes and edges can also be specified in Foswiki tables:
Node | Attributes |
---|---|
hello | color="red" |
world | shape=box |
Source | Label | Target | Attributes |
---|---|---|---|
hello | world |
Given these two tables where the only two tables in a topic then this would render the appropriate graph:
%GRAPHVIZ{ topic="SomeTopic" nodestable="0" nodecol="0" nodeattrcol="1" edgestable="1" sourcecol="0" labelcol="1" targetcol="2" edgeattrcol="3" }%
Parameter | Description | Default |
---|---|---|
table="int" / edgestable="int" |
index of table in topic to extract edges from |
|
nodestable="int" |
index of table in topic to extract nodes from |
|
nodecol="int" |
index of column that holds the node name | 0 |
nodeattrcol="int" |
index of colum that holds node attributs | |
sourcecol="int" |
index of the colum holding the source node name | 0 |
targetcol="int" |
index of the colum holding the target node name | 1 |
labelcol="int" |
index of column holding the edge label | |
edgeattrcol="int" |
index of column holding the edge attributes | |
preamble=" … " |
some dot code to be added before the generated node and edge code |
%STARTSECTION{"example1"}% digraph G { node [fontname=Verdana, fontsize=12, style=filled, fillcolor="#EEEEEE", color="#EEEEEE"] edge [fontname=Verdana, fontsize=10, color="#31CEF0"] main [shape=box, color=deeppink] init [shape=box, color=deeppink] main -> parse -> execute [weight=8] main -> init [taillabel="%main_init_label{default=""}%", labelangle=-20, labeldistance=7, color=deeppink, arrowhead=vee, arrowtail=vee] main -> cleanup main -> printf [taillabel="%main_printf_label{default=""}%", labelangle=15, labeldistance=7] execute -> make_string execute -> printf init -> make_string execute -> compare } %ENDSECTION{"example1"}%
cd /path/to/foswiki perl tools/extension_installer <NameOfExtension> installIf you have any problems, or if the extension isn't available in
configure
, then you can still install manually from the command-line. See https://foswiki.org/Support/ManuallyInstallingExtensions for more help.
Name | Version | Description |
---|---|---|
Digest::MD5 | >=0 | Required |
File::Path | >=0 | Required |
File::Temp | >=0 | Required |
graphviz | >=0 | Required |
msttcorefonts | Optional |
11 Jun 2018: | added file parameter to explicitly specify an output file |
20 Nov 2017: | fixed error in table parser (Foswiki:Main/BramVanOosterhout) |
30 Nov 2016: | missing SvgFormat parameter; fixed encoding of created dot file |
02 Mar 2016: | fixed error on dot command format; improved error reporting |
07 Oct 2015: | compatibility with foswiki >= 2.0.2 |
31 Aug 2015: | first final release |
11 Aug 2015: | release of first beta |
10 Aug 2015: | initial rewrite of DirectedGraphPlugin |
Author | Michael Daum |
Version | 1.10 |
Release | 11 Jun 2018 |
Description | Draw graphs using the GraphViz utility |
Repository | https://github.com/foswiki/GraphvizPlugin |
Copyright | © 2015-2018 Michael Daum http://michaeldaumconsulting.com |
License | GPL (Gnu General Public License) |
Home | Foswiki:Extensions/GraphvizPlugin |
Support | Foswiki:Support/GraphvizPlugin |