GVPACK(1)
GVPACK(1) π
okay bestie, welcome to the General Commands Manual page for gvpack, and honestly? she's a baddie. let's get into it π
β¨ NAME β¨
gvpack β merge and pack disjoint graphs π«Ά
πΈ SYNOPSIS πΈ
gvpack [ -nguv? ] [ -mmargin ] [ -arrayopts ] [ -ooutfile ] [
-sgraph_name ] [ -Gname=value ] [ files ]
π DESCRIPTION π
so gvpack reads in a whole stream of graphs, smushes them together into one single layout, and spits out a single graph that's basically the union of all the inputs. slay.
the input graphs must be in dot format, and they must have all the layout info they need already. and where do you get acceptable input? you get it by running a Graphviz layout program β like dot or neato β with no -T flag. periodt.
by default, the packing happens at the cluster level. so like, parts of one graph will not intrude into any top-level clusters, and they won't overlap any nodes or edges of another graph. respectful. we love boundaries π
and the output of gvpack? you can turn it into concrete output by applying neato -s -n2 with whatever -T flag you're feeling. iconic behavior fr fr.
β¨ OPTIONS β¨
here's everything she supports, no cap:
-gβ combines the graphs at the graph level. it uses more space, but it stops parts of one graph from ending up between parts of another. worth it for the aesthetic tbh.-array[_flags][n]β combines the graphs at the graph level, but places them in an array π. by default the layout goes in row-major order, and the number of columns is roughly the square root of the number of graphs. if you supply that optional integern, that's the number of columns to use. you're in charge, main character energy.
if optional flags are supplied, they're an underscore followed by any of the letters "c", "t", "b", "l", "r", "u" or "i". if "c" is supplied, the graphs are packed in column-major order, and in that case a final integer specifies the number of rows. the flags "t", "b", "l", "r" mean components are aligned along the top, bottom, left or right, respectively. by default, the insertion order is decided by sorting the graphs by size, largest to smallest. if the "u" flag is set, the graphs get sorted based on the non-negative integer sortv attribute attached to each graph. and the "i" flag means no sorting at all β the graphs get inserted in input order. iykyk.
-Gname=valueβ specifies attributes to be added to the resulting union graph. for example, you can use this to specify a graph label π·οΈ.-mmarginβ packs the graphs allowing a margin of output points around the parts. give her some personal space β¨-nβ combines the graphs at the node level. clusters are ignored in the packing. bye clusters π-ooutputβ prints output to the file output. if you don't give this,gvpackusesstdout. classic.-sgraph_nameβ use graph_name as the name of the root graph. by default,"root"is used. cute.-uβ don't pack the graphs. just combine them into a single graph. minimal effort, still valid π-vβ verbose mode. she will talk.-?β prints usage information and exits. the little help meow meow.
π¦ OPERANDS π¦
the following operand is supported:
- files β names of files containing 1 or more graphs in
dotformat. if no files operand is specified, the standard input will be used. stdin bestie, we love her π«Ά
π RETURN CODES π
gvpack returns 0 if there were no problems, and non-zero otherwise. that's it, that's the vibe check β
π EXAMPLES π
ccomps -x abc.gv | dot | gvpack | neato -s -n2 -Tps
this pipeline decomposes the graph in abc.gv into its connected components, lays out each one using dot, packs them all back together again, and produces the final drawing in PostScript. and of course, there is nothing stopping you from using different layouts for each component. mix and match, go off π₯
π BUGS π
okay listen, the tea:
- all the input graphs must be directed or undirected. you cannot mix, bestie. pick a lane π
- an input graph should not have a label, since this will be used in its layout. and since
gvpackignores root graph labels, the resulting layout may contain some extra space. lowkey annoying but that's the deal π gvpackunsets the bounding box attribute of all non-cluster subgraphs. just so you know.
π AUTHORS π
Emden R. Gansner <erg@research.att.com> β the legend herself. we stan π
πΈ SEE ALSO πΈ
gvpr(1), dot(1), neato(1), twopi(1), ccomps(1), libpack(3)
and that's the whole page, bestie π§ this was GVPACK(1) from the General Commands Manual, dated 27 May 2010. go pack some graphs, you absolute icon πβ¨
π¦ where this page comes from
- alpine 3.22: graphviz-doc 12.2.1-r0 Β· EPL-1.0
- alpine 3.23: graphviz-doc 12.2.1-r0 Β· EPL-1.0
- alpine 3.24: graphviz-doc 12.2.1-r3 Β· EPL-1.0
- arch rolling: graphviz 16.1.0-2 Β· EPL
- centos-stream 10: graphviz 9.0.0-15.el10 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- centos-stream 9: graphviz 2.44.0-26.el9 Β· EPL-1.0
- centos-stream 9: graphviz 2.44.0-26.el9 Β· EPL-1.0
- debian bookworm: graphviz 2.42.2-7+deb12u1 Β· EPL-1.0
- debian trixie: graphviz 2.42.4-3 Β· EPL-1.0
- fedora 43: graphviz 13.1.1-3.fc43 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 43: graphviz 13.1.1-3.fc43 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 43: graphviz 13.1.2-3.fc43 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 43: graphviz 13.1.2-3.fc43 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 44: graphviz 14.1.2-2.fc44 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 44: graphviz 14.1.2-2.fc44 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 44: graphviz 14.1.4-2.fc44 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- fedora 44: graphviz 14.1.4-2.fc44 Β· epl-1.0 AND cpl-1.0 AND bsd-3-clause AND mit AND gpl-3.0-or-later WITH bison-exception-2.2 AND apache-1.1 AND lgpl-2.0-or-later WITH libtool-exception AND smlnj AND hpnd-uc
- nixos 26.05: graphviz 12.2.1
- nixpkgs unstable: graphviz 15.1.1
- opensuse-leap 16.0: graphviz 12.2.1-160000.1.1 Β· EPL-1.0
- opensuse-leap 16.0: graphviz 12.2.1-160000.1.1 Β· EPL-1.0
- opensuse-leap 16.0: graphviz 12.2.1-160000.1.1 Β· EPL-1.0
- opensuse-leap 16.0: graphviz 12.2.1-160000.1.1 Β· EPL-1.0
- ubuntu jammy: graphviz 2.42.2-6 Β· EPL-1.0
- ubuntu jammy: graphviz 2.42.2-6ubuntu0.1 Β· EPL-1.0
- ubuntu noble: graphviz 2.42.2-9build1 Β· EPL-1.0
- ubuntu noble: graphviz 2.42.2-9ubuntu0.1 Β· EPL-1.0
- ubuntu questing: graphviz 2.42.4-3build2
- ubuntu resolute: graphviz-tools 14.1.2-1ubuntu1 Β· EPL-1.0
- ubuntu stonking: graphviz-tools 14.1.2-1ubuntu2 Β· EPL-1.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms