Ask Your Question
2

Preserving the rooted tree layout in graphs

asked 2018-07-22 17:07:38 +0100

anonymous user

Anonymous

updated 2018-07-23 09:40:44 +0100

I am working in a research project where I deal with rooted trees. I want to be able to add edges to the rooted tree and somehow "preserve" the rooted tree layout. More precisely, if I add the edges $(2,8)$ and $(3,6)$ in the rooted tree produced by the code below

G=Graph({0:[1,2,3,4],1:[5,6,7],4:[8,9,10],6:[11,12],9:[13,14]})
G.show(layout='tree',tree_root=0)
G.add_edges([(3,9),(2,6)])
G.show()

the layout of the updated graph is kind of messy and it gets worse if the order of the tree is increased. I want to add the new edges in a different color but without affecting the layout of the initial tree. I want the updated graph to look like the output of this tikzpicture:

  \begin{tikzpicture}[
   V/.style = {% V as Vortex
        circle,thick,fill=orange},scale=0.4]


   %drawing nodes
    \node[V] (0) at (-9,11) [scale=0.5,draw] {0};
    \node[V] (1) at (-3,8) [scale=0.5,draw] {1};
    \node[V] (2) at (-7,8) [scale=0.5,draw] {2};
    \node[V] (3) at (-11,8)[scale=0.5,,draw] {3};
    \node[V] (4) at (-15,8) [scale=0.5,draw] {4};
    \node[V] (5) at (-1,5) [scale=0.5,draw] {5};
    \node[V] (6) at (-3,5) [scale=0.5,draw] {6};
    \node[V] (7) at (-5,5) [scale=0.5,draw] {7};
    \node[V] (8) at (-13,5) [scale=0.5,draw] {8};
    \node[V] (9) at (-15,5) [scale=0.5,draw] {9};
    \node[V] (10) at (-17,5) [scale=0.4,draw] {10};
    \node[V] (11) at (-2,2) [scale=0.4,draw] {11};
    \node[V] (12) at (-4,2) [scale=0.4,draw] {12};
    \node[V] (13) at (-14,2) [scale=0.4,draw] {13};
    \node[V] (14) at (-16,2) [scale=0.4,draw] {14};

    \draw[black,very thick]
    (0) to (1)
    (0) to (2)
    (0) to (3)
    (0) to (4)
    (1) to (5)
    (1) to (6)
    (1) to (7)
    (6) to (11)
    (6) to (12)
    (4) to (8)
    (4) to (9)
    (4) to (10)
    (9) to (13)
    (9) to (14);

     \draw[green,very thick,dotted]
     (3) to (9)
     (2) to (6);
\end{tikzpicture}

Is this even possible?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2018-07-22 18:58:09 +0100

tmonteil gravatar image

You can save the positions of the vertices as follows:

sage: G.show(layout='tree',tree_root=0, save_pos=True)

Then, when you add edges, the "optimal" position of the vertices is not recomputed.

edit flag offensive delete link more

Comments

Thank you! Unfortunately I do not have enough reputation to upvote this answer.

kristi gravatar imagekristi ( 2018-07-22 19:49:07 +0100 )edit

If you post anonymously or as a wiki, then you can not get karma, hence you can not get rights.

tmonteil gravatar imagetmonteil ( 2018-07-22 23:28:53 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2018-07-22 17:07:38 +0100

Seen: 405 times

Last updated: Jul 23 '18