Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains.
The Graphviz layout programs take descriptions of graphs in a simple text language, and make diagrams in useful formats, such as images and SVG for web pages; PDF or Postscript for inclusion in other documents; or display in an interactive graph browser. Graphviz has many useful features for concrete diagrams, such as options for colors, fonts, tabular node layouts, line styles, hyperlinks, and custom shapes.
A new agnnodes_z function is available as an alternative to agnnodes. This new function should be preferred in new code.
Changed
The core plugin’s JSON renderer no longer overwrites the graph’s IO discipline. This will only be relevant to users writing their own plugin-using code.
Breaking: The agmemconcat function has been removed.
Breaking: Support for the undocumented postaction attribute has been removed.
gvmap discards cluster attribute information if any cluster attribute has a negative value. This should never occur in normal operation (the cluster program only attaches non-negative cluster attributes), but only if a user has incorrectly edited dot source.
Breaking: The gvmap options -g, -l, and -p have been removed. Their functionality was never implemented and passing these had no effect.
Breaking: xdot_linear_grad.n_stops and xdot_radial_grad.n_stops are now of type unsigned.
Fixed
Rendering multiple graphs with the core plugin’s FIG renderer no longer results in later outputs referring to colors defined in earlier outputs.
libxdot rejects parsing of linear and radial gradients that claim a negative number of stops.
Graphs that require “top sorting” during crossing minimization no longer cause Graphviz to crash. This was a regression in Graphviz 14.1.3. #2851
Fixed infinite loop in gvpr #2849 by making object traversals skip newly created objects in mutable graphs. To do this, added API to get current object sequence numbers.