I was quite impressed by the solution given by "cfr" for the question posted here.
Can you suggest a method to change the two main children (labelled Projection matrix Theory and Reconstruction Algorithms) to position on the north and south of the root node (Compressed Sensing Theory)? That is, I would like the two main children nodes to open out towards north and south of the root node. The main child node "Reconstruction Algorithm" should appear just below the root node and the child node "Projection matrix Theory" should appear above the root node. The child nodes of "Projection matrix Theory" should open upward whereas the child nodes of "Reconstruction Algorithm" can remain intact.
I had made a comment on cfr's answer, requesting the same. As he suggested I am posting again it as a new question. Thanks.
EDIT: I tried to change it, but I landed up in getting this figure!
The code I modified is given here:
\documentclass[border=5pt]{standalone}
\usepackage{tikz,pgf}
\usepackage{forest}
\usetikzlibrary{arrows.meta, shapes.geometric, calc, shadows}
\colorlet{mygreen}{green!75!black}
\colorlet{col1in}{orange!30}
\colorlet{col1out}{orange!40}
%\colorlet{col1in}{red!30}
%\colorlet{col1out}{red!40}
\colorlet{col2in}{mygreen!40}
\colorlet{col2out}{mygreen!50}
\colorlet{col3in}{blue!30}
\colorlet{col3out}{blue!40}
\colorlet{col4in}{mygreen!20}
\colorlet{col4out}{mygreen!30}
\colorlet{col5in}{blue!10}
\colorlet{col5out}{blue!20}
\colorlet{col6in}{blue!20}
\colorlet{col6out}{blue!30}
\colorlet{col7out}{red!10}
\colorlet{col7in}{red!50}
\colorlet{col8out}{red!40}
\colorlet{col8in}{red!20}
%\colorlet{col7out}{orange}
%\colorlet{col7in}{orange!50}
%\colorlet{col8out}{orange!40}
%\colorlet{col8in}{orange!20}
\colorlet{linecol}{blue!60}
\begin{document}
\pgfkeys{/forest,
rect/.append style={rectangle, rounded corners=2pt, inner color=col6in, outer color=col6out},
ellip/.append style={ellipse, inner color=col5in, outer color=col5out},
orect/.append style={rect, font=\sffamily\bfseries\LARGE, text width=325pt, text centered, minimum height=10pt, outer color=col7out, inner color=col7in},
oellip/.append style={ellip, inner color=col8in, outer color=col8out, font=\sffamily\bfseries\large, text centered},
}
\begin{forest}
for tree={
font=\sffamily\bfseries,
line width=1pt,
draw=linecol,
ellip,
align=center,
child anchor=north,
parent anchor=south,
drop shadow,
l sep+=12.5pt,
edge path={
\noexpand\path[color=linecol, rounded corners=5pt, >={Stealth[length=10pt]}, line width=1pt, ->, \forestoption{edge}]
(!u.parent anchor) -- +(0,-5pt) -|
(.child anchor)\forestoption{edge label};
},
where level={3}{tier=tier3}{},
where level={0}{l sep-=15pt}{},
where level={1}{
if n={1}{
edge path={
\noexpand\path[color=linecol, rounded corners=5pt, >={Stealth[length=10pt]}, line width=1pt, ->, \forestoption{edge}]
(!u.north) -| (.child anchor)\forestoption{edge label};
},
}{
edge path={
\noexpand\path[color=linecol, rounded corners=5pt, >={Stealth[length=10pt]}, line width=1pt, ->, \forestoption{edge}]
(!u.south) -| (.child anchor)\forestoption{edge label};
},
}
}{},
}
[Compressed Sensing\\Theory, inner color=col1in, outer color=col1out,
[Projection Matrix\\Theory, inner color=col2in, grow'=north, outer color=col2out,
[Optimise Projection\\Matrix, inner color=col4in, outer color=col4out, grow=south]
[Reduce Number of\\Measurements, inner color=col4in, outer color=col4out,grow=south]
]
[Reconstruction\\Algorithms, inner color=col3in, outer color=col3out
[Convex Relaxation \\ Methods
[Sparse Signal\\Estimate, rect, name=sse1
]
]
[\hspace{1em} Greedy \hspace{1em} \\ Pursuits
[Sparse Signal\\Estimate, rect, name=sse2
]
]
[, phantom, calign with current
[A\\B, phantom
[Our Work, orect, name=us
[{Improved Sparse Signal Estimate!}, oellip
]
]
]
]
[Non-Convex\\ Methods
[Sparse Signal\\Estimate, rect, name=sse3
]
]
[Combinatorial\\Algorithms
[Sparse Signal\\Estimate, rect, name=sse4
]
]
]
]
% \begin{scope}[color=linecol, rounded corners=5pt, >={Stealth[length=10pt]}, line width=1pt, ->]
% \draw (sse2.south) -- (us.north -| sse2.south);
% \draw (sse3.south) -- (us.north -| sse3.south);
% \coordinate (c1) at ($(sse1.south)!2/5!(sse2.south)$);
% \coordinate (c2) at ($(sse3.south)!2/5!(sse4.south)$);
% \draw (sse1.south) -- +(0,-10pt) -| (us.north -| c1);
% \draw (sse4.south) -- +(0,-10pt) -| (us.north -| c2);
% \end{scope}
\end{forest}
\end{document}
I was unable to place the node "Projection Matrix Theory" above the root node "Compressed Sensing". Similarly the arrows from the node "Projection Matrix Theory" are not ending at the intended place. Where am I going wrong?
forest
. Why not use the other solution offered to that question? Or, if you are drawing a mind map, usetikz
'smindmap
library?forest
is designed to do this. That isn't to say that there isn't some way of forcing it or some wizardry somebody will come along with. But it really, really doesn't want to let you do this. You can change the direction of growth for the subtree rooted in a node (see page 30), but that will not affect the direction of growth which affects that node itself. Effectively, you want 2 different directions of growth active for a single subtree and there is no obvious way of doing that.