Jump to content

Graphviz: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
copy-edit
m MOS:CAPFRAG, wiki, style, MOS:CAPS, fmt.
 
(46 intermediate revisions by 35 users not shown)
Line 1: Line 1:
{{Short description|Software package for graph visualization}}
{{Infobox software
{{Infobox software
| name =
| name =
Line 12: Line 13:
| collapsible =
| collapsible =
| author =
| author =
| developer = [[AT&T Labs|AT&T Labs Research]] and contributors<ref>{{cite web |url=http://graphviz.org/credits/ |title=Credits Graphviz}}</ref>
| developer = [[AT&T Labs|AT&T Labs Research]] and contributors<ref>{{cite web |url=https://graphviz.org/credits/ |title=Credits Graphviz}}</ref>
| released = before {{Start date and age|1991}}<ref>Eleftherios Koutsofios and Stephen North. Drawing graphs with dot. Technical Report 910904-59113-08TM, AT&T Bell Laboratories, Murray Hill, New Jersey, September 1991.</ref>
| released = before {{Start date and age|1991}}<ref>Eleftherios Koutsofios and Stephen North. Drawing graphs with dot. Technical Report 910904-59113-08TM, AT&T Bell Laboratories, Murray Hill, New Jersey, September 1991.</ref>
| discontinued =
| discontinued =
| latest release version = 2.40.1
| latest release version = {{wikidata|property|reference|P348}}
| latest release date = {{Start date and age|2016|12|25|df=yes}}<ref>{{cite web|url=https://gitlab.com/graphviz/graphviz/tags|accessdate=23 August 2018|via=[[GitLab]]|title=Tags - graphviz / graphviz}}</ref>
| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| latest preview version =
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| repo = https://gitlab.com/graphviz/graphviz
| repo = {{URL|https://gitlab.com/graphviz/graphviz}}
| programming language = [[C (programming language)|C]]
| programming language = [[C (programming language)|C]]
| operating system = [[Linux]], [[macOS]], [[Microsoft Windows|Windows]]
| operating system = [[Linux]], [[macOS]], [[Microsoft Windows|Windows]]
Line 29: Line 30:
| genre = Graph visualization
| genre = Graph visualization
| license = [[Eclipse Public License]]
| license = [[Eclipse Public License]]
| website = {{URL|graphviz.org}}
| website = {{URL|https://graphviz.org}}
}}
}}
[[File:Red_black_tree_graphviz_example.svg|thumb|250px|right|A [[red–black tree]] plotted by Graphviz.]]
[[File:Red_black_tree_graphviz_example.svg|thumb|250px|right|A [[red–black tree]] plotted by Graphviz]]
[[File:UnitedStatesGraphViz.svg|thumb|250px|right|Undirected graph showing adjacency of the 48 [[Contiguous United States|contiguous]] [[United States]]]]
[[File:UnitedStatesGraphViz.svg|thumb|250px|right|Undirected graph showing adjacency of the 48 [[contiguous United States]]]]
[[File:Wikipedia HistoryHelper Pluging Life Cycle.svg|thumb|250x250px|A visualization of a [[JavaScript]] life cycle made by using Graphviz]]
'''Graphviz''' (short for ''Graph Visualization Software'') is a package of [[open-source software|open-source]] tools initiated by [[AT&T Labs|AT&T Labs Research]] for [[Graph drawing|drawing]] [[Graph theory|graphs]] specified in [[DOT (graph description language)|DOT language]] scripts. It also provides libraries for software applications to use the tools. Graphviz is [[free software]] licensed under the [[Eclipse Public License]].
'''Graphviz''' (short for ''Graph Visualization Software'') is a package of [[open-source software|open-source]] tools initiated by [[AT&T Labs|AT&T Labs Research]] for [[Graph drawing|drawing]] [[graph (discrete mathematics)|graphs]] (as in [[Vertex (graph theory)|nodes]] and [[Edge (graph theory)|edges]], not as in [[bar chart]]s) specified in [[DOT (graph description language)|DOT language]] scripts having the [[file name extension]] "gv". It also provides libraries for software applications to use the tools. Graphviz is [[free software]] licensed under the [[Eclipse Public License]].


== Tools ==
==Software architecture==
Graphviz consists of a graph description language named the [[DOT (graph description language)|DOT language]]<ref>[http://www.graphviz.org/doc/info/lang.html The DOT Language]</ref> and a set of tools that can generate and/or process DOT files:


; dot : a [[Command-line interface|command-line]] tool to produce [[layered graph drawing|layered drawings]] of [[directed graph]]s in a variety of output formats, such as ([[PostScript]], [[PDF]], [[Scalable Vector Graphics|SVG]], annotated text and so on).
; dot : a [[Command-line interface|command-line]] tool to produce [[layered graph drawing|layered graph drawings]] in a variety of output formats, such as ([[PostScript]], [[PDF]], [[Scalable Vector Graphics|SVG]], annotated text and so on).
; neato : useful for [[undirected graph]]s up to about 1000 nodes. "[[Spring system|Spring model]]" layout minimizes global energy.
; neato : for "spring model" layout (in Mac OS version called "energy minimised")
; fdp : [[force-directed graph drawing]] similar to "spring model", but minimizes forces instead of energy. Useful for undirected graphs.
; sfdp : a layout engine for [[Graph (discrete mathematics)#Undirected graph|Undirected graph|undirected graphs]] that scales to very large graphs.
; fdp : another layout engine for undirected graphs.
; sfdp : multiscale version of fdp for the layout of large undirected graphs.
; twopi : for radial graph layouts.
; twopi : for radial graph layouts. Nodes are placed on concentric circles depending on their distance from a given root node.
; circo : circular layout. Suitable for certain diagrams of multiple cyclic structures, such as certain telecommunications networks.
; circo : for circular graph layouts.
; dotty : a [[graphical user interface]] to visualize and edit graphs.
; dotty : a [[graphical user interface]] to visualize and edit graphs.
; lefty : a programmable (in a language inspired by [http://portal.acm.org/citation.cfm?id=318642 EZ]<ref>[http://graphviz.org/pdf/leftyguide.pdf The Lefty guide (“Editing Pictures with lefty”)], section&nbsp;3.1, p.&nbsp;9.</ref>) [[Widget (GUI)|widget]] that displays DOT graphs and allows the user to perform actions on them with the mouse. Therefore, Lefty be used as the view in a [[model–view–controller]] GUI application that uses graphs.
; lefty : a programmable (in a language inspired by [http://portal.acm.org/citation.cfm?id=318642 EZ]<ref>[http://graphviz.org/pdf/leftyguide.pdf The Lefty guide (“Editing Pictures with lefty”)], section&nbsp;3.1, p.&nbsp;9.</ref>) [[Widget (GUI)|widget]] that displays DOT graphs and allows the user to perform actions on them with the mouse. Therefore, Lefty can be used as the view in a [[model–view–controller]] GUI application that uses graphs.
; gml2gv, gv2gml: convert to/from [[Graph_Modelling_Language|GML]], another graph file format.
; graphml2g: convert a [[GraphML]] file to the DOT format.
; gxl2gv, gv2gxl: convert to/from [[GXL]], another graph file format.


== Applications that use Graphviz ==
== Applications that use Graphviz ==
{{refimprove section|date=March 2013}}
{{refimprove section|date=March 2013}}
Notable applications of Graphviz include:
* [[ArgoUML]]'s alternative UML Diagram rendering called argouml-graphviz.<ref name="argo_graphvis">{{cite web|title=argouml-graphviz.tigris.org|url=http://argouml-graphviz.tigris.org/|website=argouml-graphviz.tigris.org|accessdate=15 January 2018}}</ref>
* [[ArgoUML]]'s alternative UML diagram rendering called argouml-graphviz.<ref name="argo_graphvis">{{cite web |title=argouml-graphviz.tigris.org |url=http://argouml-graphviz.tigris.org/ |website=argouml-graphviz.tigris.org |access-date=15 January 2018 |archive-date=17 March 2012 |archive-url=https://web.archive.org/web/20120317061219/http://argouml-graphviz.tigris.org/ |url-status=dead}}</ref>
* [[AsciiDoc]] can embed Graphviz syntax as a diagram.
* [[AsciiDoc]] can embed Graphviz syntax as a diagram.
* [[GNU Bison|Bison]] is able to output the grammar as dot for visualization of the language.<ref name="bison_dot">{{cite book|last1=Naumann|first1=Uwe|title=The Art of Differentiating Computer Programs: An Introduction to Algorithmic Differentiation|date=2012|publisher=SIAM|isbn=9781611972078|page=181|url=https://books.google.com/books?id=OgQuUR4nLu0C&pg=PA181&dq=bison+graphviz&hl=en&sa=X&ved=0ahUKEwiph4z02tjYAhVY1mMKHccXDvAQ6AEILTAB#v=onepage&q=bison%20graphviz&f=false|access-date=15 January 2018|language=en}}</ref>
* [[GNU Bison|Bison]] is able to output the grammar as dot for visualization of the language.<ref name="bison_dot">{{cite book |last1=Naumann |first1=Uwe |title=The Art of Differentiating Computer Programs: An Introduction to Algorithmic Differentiation |date=2012 |publisher=SIAM |isbn=9781611972078 |page=181 |url=https://books.google.com/books?id=OgQuUR4nLu0C&q=bison+graphviz&pg=PA181 |access-date=15 January 2018 |language=en}}</ref>
* [[Confluence (software)|Confluence]] has a Graphviz plugin to render diagrams from text descriptions.
* [[ConnectedText]] has a Graphviz plugin.
* [[ConnectedText]] has a Graphviz plugin.
* [[Doxygen]] uses Graphviz to generate diagrams, including class hierarchies and collaboration for [[source code]].<ref name="doxygen_graphviz">{{cite book|last1=Anderson|first1=Fritz|title=Xcode 5 Start to Finish: iOS and OS X Development|date=2014|publisher=Addison-Wesley Professional|isbn=9780133751024|page=425|url=https://books.google.com/books?id=Po-AAwAAQBAJ&pg=PA425&dq=doxygen+graphviz&hl=en&sa=X&ved=0ahUKEwiil77i2djYAhVNyWMKHYvdD30Q6AEIMTAB#v=onepage&q=doxygen%20graphviz&f=false|access-date=15 January 2018|language=en}}</ref>
* [[Doxygen]] uses Graphviz to generate diagrams, including class hierarchies, collaboration and call trees for [[source code]].<ref name="doxygen_graphviz">{{cite book |last1=Anderson |first1=Fritz |title=Xcode 5 Start to Finish: iOS and OS X Development |date=2014 |publisher=Addison-Wesley Professional |isbn=9780133751024 |page=425 |url=https://books.google.com/books?id=Po-AAwAAQBAJ&q=doxygen+graphviz&pg=PA425 |access-date=15 January 2018 |language=en}}</ref>
* [[FreeCAD]] uses Graphviz to display the dependencies between objects in documents.<ref name="freecad">{{cite web |url=https://www.freecadweb.org/wiki/Std_DependencyGraph |title=Std DependencyGraph|author=<!--Not stated--> |date= |website=FreeCAD web |publisher= |access-date=18 July 2018 |quote=}}</ref>
* [[FreeCAD]] uses Graphviz to display the dependencies between objects in documents.<ref name="freecad">{{cite web |url=https://www.freecadweb.org/wiki/Std_DependencyGraph |title=Std DependencyGraph |author=<!--Not stated--> |website=FreeCAD web |access-date=18 July 2018 }}</ref>
* [[Gephi]] has a Graphviz plugin.
* [[Gephi]] has a Graphviz plugin.
* [[Gramps]] uses Graphviz to create family trees.
* [[Gramps_(software)|Gramps]] uses Graphviz to create genealogical (family tree) diagrams.
* [[Graph-tool]] a Python library for graph manipulation and visualization.
* [[OmniGraffle]] version 5 and later uses the Graphviz engine, with a limited set of commands, for automatically laying out graphs.<ref>https://support.omnigroup.com/documentation/omnigraffle/mac/7.6/en/opening-and-importing-files-in-omnigraffle/#supported-dot-syntax</ref>
* [[OmniGraffle]] version 5 and later uses the Graphviz engine, with a limited set of commands, for automatically laying out graphs.<ref>{{Cite web |url=https://support.omnigroup.com/documentation/omnigraffle/mac/7.6/en/opening-and-importing-files-in-omnigraffle/#supported-dot-syntax |title = OmniGraffle 7.6 Reference Manual for macOS – Opening and Importing Files in OmniGraffle}}</ref>
* [[Org-mode]] can work with DOT source code blocks.<ref name="org_dot">{{cite web|last1=Voit|first1=Karl|title=Org tutorial on generating simple process diagrams using dot and tables|url=https://orgmode.org/worg/org-tutorials/org-dot-diagrams.html|website=orgmode.org|access-date=15 January 2018|language=en}}</ref>
* [[Org-mode]] can work with DOT source code blocks.<ref name="org_dot">{{cite web |last1=Voit |first1=Karl |title=Org tutorial on generating simple process diagrams using dot and tables |url=https://orgmode.org/worg/org-tutorials/org-dot-diagrams.html |website=orgmode.org |access-date=15 January 2018 |language=en}}</ref>
* [[PlantUML]] uses Graphviz to generate UML diagrams from text descriptions.
* [[PlantUML]] uses Graphviz to generate UML diagrams from text descriptions.
* [[Puppet (software)|Puppet]] can produce DOT resource graphs that can be viewed with Graphviz.
* [[Puppet (software)|Puppet]] can produce DOT resource graphs that can be viewed with Graphviz.
* [[Scribus]] is an Open Source DTP program that can use Graphviz to render graphs by using its internal editor in a special frame type called render frame.<ref name="scribus_graphviz">{{cite book|last1=Gemy|first1=Cedric|title=Scribus 1.3.5 Beginner's Guide|date=2010|publisher=Packt Publishing Ltd|isbn=9781849513012|url=https://books.google.com/books?id=xTnlrad5q5EC&pg=PT309&lpg=PT309&dq=scribus+graphviz&source=bl&ots=FUGCYBHEI_&sig=WntB3uOVuqy3lvzmGA-a0zigyV0&hl=en&sa=X&ved=0ahUKEwj24rSa2djYAhVS7WMKHTm_Bo8Q6AEIQTAD#v=onepage&q=scribus%20graphviz&f=false|accessdate=15 January 2018|language=en}}</ref>
* [[Scribus]] is an open-source DTP program that can use Graphviz to render graphs by using its internal editor in a special frame type called render frame.<ref name="scribus_graphviz">{{cite book |last1=Gemy |first1=Cedric |title=Scribus 1.3.5 Beginner's Guide |date=2010 |publisher=Packt Publishing Ltd |isbn=9781849513012 |url=https://books.google.com/books?id=xTnlrad5q5EC&q=scribus+graphviz&pg=PT309 |access-date=15 January 2018 |language=en}}</ref>
* [[Sphinx (documentation generator)|Sphinx]] is a documentation generator that can use Graphviz to embed graphs in documents.
* [[Sphinx (documentation generator)|Sphinx]] is a documentation generator that can use Graphviz to embed graphs in documents.
* [[TOra]] a free software database development and administration GUI, available under the GNU GPL.
* [[TOra]] a free-software database development and administration GUI, available under the GNU GPL.
* [[Trac]] wiki has a Graphviz plugin.<ref name="trac_graphviz">{{cite web|title=GraphvizPlugin – Trac Hacks - Plugins Macros etc.|url=https://trac-hacks.org/wiki/GraphvizPlugin|website=trac-hacks.org|access-date=15 January 2018}}</ref>
* [[Trac]] wiki has a Graphviz plugin.<ref name="trac_graphviz">{{cite web |title=GraphvizPlugin |url=https://trac-hacks.org/wiki/GraphvizPlugin |website=trac-hacks.org |access-date=15 January 2018}}</ref>
* [[Zim (software)|Zim]] includes a plugin that allows adding and editing in-page diagrams using the Graphviz dot language.<ref name="zim_graphviz">{{cite web |title=Zim a desktop wiki: Diagram Editor |url=http://zim-wiki.org/manual/Plugins/Diagram_Editor.html |website=zim-wiki.org |access-date=15 January 2018}}</ref>
* Visitors is a Web analyzer, no longer maintained, also generating Graphviz files to visualize access paths.
* [[Vithanco]] is a visual business analysis tool that uses Graphviz for layout.
* [[WikidPad]] uses Graphviz as a plugin.
* [[Zim (software)|Zim]] includes a plugin that allows adding and editing in-page diagrams using the Graphviz dot language.<ref name="zim_graphviz">{{cite web|title=Zim - a desktop wiki: Diagram Editor|url=http://zim-wiki.org/manual/Plugins/Diagram_Editor.html|website=zim-wiki.org|access-date=15 January 2018}}</ref>


== See also ==
== See also ==
Line 80: Line 84:


==External links==
==External links==
* {{Official website}}
* {{Official website|https://graphviz.org/}}
* [https://gitlab.com/graphviz/graphviz/ graphviz] on [[GitLab]]
* [https://gitlab.com/graphviz/graphviz/ graphviz] on [[GitLab]]
* [http://www.research.att.com/groups/infovis/projects.html Graphviz], Projects & Software Page, AT&T Labs Research
* [https://web.archive.org/web/20101220014848/http://www.research.att.com/groups/infovis/projects.html Graphviz], Projects & Software Page, AT&T Labs Research
* [http://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html An Introduction to Graphviz and dot (M. Simionato, 2004)]
* [https://web.archive.org/web/20180428162301/http://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html An Introduction to Graphviz and dot (M. Simionato, 2004)]
* [http://www.linux.com/archive/articles/49655 Create relationship diagrams with Graphviz (Shashank Sharma, 2005) ]
* [http://www.linux.com/archive/articles/49655 Create relationship diagrams with Graphviz (Shashank Sharma, 2005) ] {{Webarchive|url=https://web.archive.org/web/20110813033431/http://www.linux.com/archive/articles/49655 |date=2011-08-13 }}
* [http://www.webgraphviz.com Webgraphviz], port of Graphviz for JavaScript running in a Web browser
* [http://www.gravizo.com Gravizo] online graph image generator to embed directly on Web page or a "readme" file. Can generate Graphviz, [[PlantUML]] and [[UMLGraph]]
* [https://muddii.com/item/oS3ksoS7Stym32Wxr graphviz], running and saving Graphviz on the desktop or mobile browser


{{Graph Analysis Software}}
{{Graph Analysis Software}}
Line 94: Line 95:
[[Category:Free software programmed in C]]
[[Category:Free software programmed in C]]
[[Category:Graph drawing software]]
[[Category:Graph drawing software]]
[[Category:Software that uses Tk]]
[[Category:Software that uses Tk (software)]]
[[Category:Software using the Eclipse license]]
[[Category:Software using the Eclipse license]]

Latest revision as of 22:31, 3 July 2024

Graphviz
Developer(s)AT&T Labs Research and contributors[1]
Initial releasebefore 1991; 33 years ago (1991)[2]
Stable release
12.2.1[3] / 6 December 2024; 22 days ago (6 December 2024)
Repositorygitlab.com/graphviz/graphviz
Written inC
Operating systemLinux, macOS, Windows
TypeGraph visualization
LicenseEclipse Public License
Websitegraphviz.org
A red–black tree plotted by Graphviz
Undirected graph showing adjacency of the 48 contiguous United States
A visualization of a JavaScript life cycle made by using Graphviz

Graphviz (short for Graph Visualization Software) is a package of open-source tools initiated by AT&T Labs Research for drawing graphs (as in nodes and edges, not as in bar charts) specified in DOT language scripts having the file name extension "gv". It also provides libraries for software applications to use the tools. Graphviz is free software licensed under the Eclipse Public License.

Tools

[edit]
dot
a command-line tool to produce layered graph drawings in a variety of output formats, such as (PostScript, PDF, SVG, annotated text and so on).
neato
useful for undirected graphs up to about 1000 nodes. "Spring model" layout minimizes global energy.
fdp
force-directed graph drawing similar to "spring model", but minimizes forces instead of energy. Useful for undirected graphs.
sfdp
multiscale version of fdp for the layout of large undirected graphs.
twopi
for radial graph layouts. Nodes are placed on concentric circles depending on their distance from a given root node.
circo
circular layout. Suitable for certain diagrams of multiple cyclic structures, such as certain telecommunications networks.
dotty
a graphical user interface to visualize and edit graphs.
lefty
a programmable (in a language inspired by EZ[4]) widget that displays DOT graphs and allows the user to perform actions on them with the mouse. Therefore, Lefty can be used as the view in a model–view–controller GUI application that uses graphs.
gml2gv, gv2gml
convert to/from GML, another graph file format.
graphml2g
convert a GraphML file to the DOT format.
gxl2gv, gv2gxl
convert to/from GXL, another graph file format.

Applications that use Graphviz

[edit]

Notable applications of Graphviz include:

  • ArgoUML's alternative UML diagram rendering called argouml-graphviz.[5]
  • AsciiDoc can embed Graphviz syntax as a diagram.
  • Bison is able to output the grammar as dot for visualization of the language.[6]
  • Confluence has a Graphviz plugin to render diagrams from text descriptions.
  • ConnectedText has a Graphviz plugin.
  • Doxygen uses Graphviz to generate diagrams, including class hierarchies, collaboration and call trees for source code.[7]
  • FreeCAD uses Graphviz to display the dependencies between objects in documents.[8]
  • Gephi has a Graphviz plugin.
  • Gramps uses Graphviz to create genealogical (family tree) diagrams.
  • Graph-tool a Python library for graph manipulation and visualization.
  • OmniGraffle version 5 and later uses the Graphviz engine, with a limited set of commands, for automatically laying out graphs.[9]
  • Org-mode can work with DOT source code blocks.[10]
  • PlantUML uses Graphviz to generate UML diagrams from text descriptions.
  • Puppet can produce DOT resource graphs that can be viewed with Graphviz.
  • Scribus is an open-source DTP program that can use Graphviz to render graphs by using its internal editor in a special frame type called render frame.[11]
  • Sphinx is a documentation generator that can use Graphviz to embed graphs in documents.
  • TOra a free-software database development and administration GUI, available under the GNU GPL.
  • Trac wiki has a Graphviz plugin.[12]
  • Zim includes a plugin that allows adding and editing in-page diagrams using the Graphviz dot language.[13]

See also

[edit]

References

[edit]
  1. ^ "Credits Graphviz".
  2. ^ Eleftherios Koutsofios and Stephen North. Drawing graphs with dot. Technical Report 910904-59113-08TM, AT&T Bell Laboratories, Murray Hill, New Jersey, September 1991.
  3. ^ "12.2.1 · graphviz / graphviz · GitLab". Retrieved 10 December 2024.
  4. ^ The Lefty guide (“Editing Pictures with lefty”), section 3.1, p. 9.
  5. ^ "argouml-graphviz.tigris.org". argouml-graphviz.tigris.org. Archived from the original on 17 March 2012. Retrieved 15 January 2018.
  6. ^ Naumann, Uwe (2012). The Art of Differentiating Computer Programs: An Introduction to Algorithmic Differentiation. SIAM. p. 181. ISBN 9781611972078. Retrieved 15 January 2018.
  7. ^ Anderson, Fritz (2014). Xcode 5 Start to Finish: iOS and OS X Development. Addison-Wesley Professional. p. 425. ISBN 9780133751024. Retrieved 15 January 2018.
  8. ^ "Std DependencyGraph". FreeCAD web. Retrieved 18 July 2018.
  9. ^ "OmniGraffle 7.6 Reference Manual for macOS – Opening and Importing Files in OmniGraffle".
  10. ^ Voit, Karl. "Org tutorial on generating simple process diagrams using dot and tables". orgmode.org. Retrieved 15 January 2018.
  11. ^ Gemy, Cedric (2010). Scribus 1.3.5 Beginner's Guide. Packt Publishing Ltd. ISBN 9781849513012. Retrieved 15 January 2018.
  12. ^ "GraphvizPlugin". trac-hacks.org. Retrieved 15 January 2018.
  13. ^ "Zim – a desktop wiki: Diagram Editor". zim-wiki.org. Retrieved 15 January 2018.
[edit]