Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create graph with Graphviz limiting the depth of the representation

Tags:

graphviz

dot

I have a .dot file that encodes a binary decision tree with lot of levels. In order, to visualise it, I use the command dot -Tpng sample.dot > sample.png. But the created .png is huge and hard to understand it. So I wonder if it is possible to limit the number of levels that are rendered in the output file form the command line, i.e. I don't want to modify the -dot file, I just want to modulate how the .png output is generated. I read the documentation but I couldn't find anything.

For example, if I just want the three first levels of the decision tree, is there any modifier like: dot -Tpng sample.dot > sample.png -L 3?

like image 570
tashuhka Avatar asked Dec 08 '25 21:12

tashuhka


1 Answers

You can't use dot to show only part of a graph but you can use gvpr to programmatically edit the tree and then display the edited tree with dot. See the gvpr manual here for all the details.

As an example, given the file tree.dot:

digraph G {
    n [level = 1]
    n -> nL
    nL [level = 2]
    nL -> nLL
    nLL [level = 3]
    nLL -> nLLL
    nLLL [level = 4]
    nLL -> nLLR
    nLLR [level = 4]
    nL -> nLR
    nLR [level = 3]
    nLR -> nLRL
    nLRL [level = 4]
    nLR -> nLRR
    nLRR [level = 4]
    n -> nR
    nR [level = 2]
    nR -> nRL
    nRL [level = 3]
    nRL -> nRLL
    nRLL [level = 4]
    nRL -> nRLR
    nRLR [level = 4]
    nR -> nRR
    nRR [level = 3]
    nRR -> nRRL
    nRRL [level = 4]
    nRR -> nRRR
    nRRR [level = 4]
}

... which looks like this when plotted with dot:

enter image description here

... the command gvpr -i 'N [level < 4]' tree.dot | dot -Tpng -otree3.png produces the following image:

enter image description here

There are more sophisticated ways to use gvpr that might allow the part of the graph that is to be viewed to be selected without the need to label the nodes with their levels as I have done, but I'm not sufficiently expert with gvpr to say exactly how that might be done without more research than I have time for right now.

like image 148
Simon Avatar answered Dec 11 '25 12:12

Simon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!