6

I'd like to create a poster with multiple Mindmaps. Each mindmap would be a lecture of the course, so 8 independent mindmaps i'd like eventually to position in a poster like the one below.

MinmapPoster

I am not satisfied with the organization I had so far and thanks to @Schrodingers cat Mindmap, growcyclic from? I managed to have more flexibility to rotate more circular and harmonious mindmaps. enter image description here

I put every single Mindmap in a scope. However as you can see in my simplified MWE below, the scope is not shifting the mindmap as a block (keeping its circular disposition in the block) but shifting the central node only.

My question seems related to Why does scaling a tikz picture cause everything within the scope of transform canvas to disappear? but from then :/

enter image description here

    \documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap,decorations}
\usepackage{xspace}

\makeatletter
\newcount\tikzcountgrandchild
\def\tikz@grow@concentric{%
  \pgftransformreset% 
  \pgftransformrotate{\pgfkeysvalueof{/tikz/overall rotation}+(\pgfkeysvalueof{/tikz/sibling angle})*(\tikzcountgrandchild)}%
  \ifnum\tikztreelevel=1
    \pgftransformrotate{(\pgfkeysvalueof{/tikz/sibling angle})*(\pgfkeysvalueof{/tikz/noc}-1)/2}%
  \fi
  \pgftransformxshift{\the\tikzleveldistance}%
  \ifnum\tikztreelevel=2
    \global\advance\tikzcountgrandchild by1
 \fi
}

\begin{document}
\tikzset{overall rotation/.initial=0,
    noc/.initial=0,
    branch color/.style={
        concept color=#1!white,
        every child/.append style={concept color=#1!white!30!white},
    }
}

\begin{tikzpicture}
    \begin{scope}[text width=1.5cm,align=flush center,
            mindmap,growth function=\tikz@grow@concentric,
            overall rotation=-45,
            sibling angle=360/30,
            nodes={concept},
            concept color=green!70!black,
            root concept/.append style={ ball color=green!50, line width=1.5ex,text=green!40!black,font=\huge\bfseries\scshape,minimum size=4.5cm,text width=4.5cm,},                   
            level 1/.style={,level distance=8cm,font=\Large,minimum size=3.0cm,text width=2.5cm,},
            level 2/.style={level distance=12cm,font=\large,minimum size=2.0cm,text width=2.0cm}
        ]
        \node [root concept]{Clients} 
        child[noc=3,branch color=green!70]{node {Retail} 
            child[] {node {CGPI}} 
            child[] {node {Banques priv\'ees}} 
            child[] {node {Retail banking}} 
        }
        child[noc=3,branch color=green!70]{node {ALM} 
            child[] {node {Mutuelles}} 
            child[] {node {Assurances}} 
            child[] {node {Caisse de retraite}}         
        } 
        child[noc=1,branch color=green!80]{node {Directions financi\'eres} 
            child[] {node {Corporate}} 
        } 
        child[noc=3,branch color=green!70]{node {Instrument specialists} 
            child {node {Asset Managers traditionnels}} 
            child {node {Hedge funds}} 
            child {node {Trading desks form other banks}} 
        } 
        ;
    \end{scope}

    \begin{scope}[xshift=-5cm,text width=1.5cm,align=flush center,
            mindmap,growth function=\tikz@grow@concentric,
            overall rotation=45,
            sibling angle=360/30,
            nodes={concept},
            concept color=yellow!70!black,
            root concept/.append style={ ball color=yellow!50, line width=1.5ex,text=yellow!40!black,font=\huge\bfseries\scshape,minimum size=4.5cm,text width=4.5cm,},                   
            level 1/.style={,level distance=8cm,font=\Large,minimum size=3.0cm,text width=2.5cm,},
            level 2/.style={level distance=12cm,font=\large,minimum size=2.0cm,text width=2.0cm}
        ]
        \node [root concept]{Suppliers} 
        child[noc=3,branch color=yellow!70]{node {Retail} 
            child[] {node {CGPI}} 
            child[] {node {Banques priv\'ees}} 
            child[] {node {Retail banking}} 
        }
        child[noc=3,branch color=yellow!70]{node {ALM} 
            child[] {node {Mutuelles}} 
            child[] {node {Assurances}} 
            child[] {node {Caisse de retraite}}         
        } 
        child[noc=1,branch color=yellow!80]{node {Directions financi\'eres} 
            child[] {node {Corporate}} 
        } 
        child[noc=3,branch color=yellow!70]{node {Instrument specialists} 
            child {node {Asset Managers traditionnels}} 
            child {node {Hedge funds}} 
            child {node {Trading desks form other banks}} 
        } 
        ;
    \end{scope}

\end{tikzpicture}
\end{document}

The Cat solution already helped me to produce this improvable solution enter image description here

3
  • Does it have to be done all in the same document...? Otherwise I wonder if each one could be created separately, and then the poster might be build by layering the individual images...? Not sure if that would be helpful or not.... – cmhughes Mar 14 '20 at 13:43
  • @cmhughes My original solution consisted of creating each mindmap and position each resulting pdf on a poster but I lose all possibility to connect nodes after :/ Am investigating the "transform canvas" option but no result so far... tex.stackexchange.com/questions/26846/… – JeT Mar 14 '20 at 13:45
  • @cmhughes after multiple attempts, with 8 mindmaps to display, the code becomes too messy and it turns your idea is very good. May I ask you how you would proceed? – JeT May 7 '20 at 1:20
5

As before, the problem comes from \pgftransfromreset. As a first proposal, I added two keys, overall xshift and overall yshift to fix this. They can be combined with ordinary shifts using Xshift and Yshift, respectively.

\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap,decorations}
\usepackage{xspace}

\makeatletter
\newcount\tikzcountgrandchild
\def\tikz@grow@concentric{%
  \pgftransformreset%
  \pgftransformshift{\pgfpoint{\pgfkeysvalueof{/tikz/overall xshift}}{\pgfkeysvalueof{/tikz/overall yshift}}}% 
  \pgftransformrotate{\pgfkeysvalueof{/tikz/overall rotation}+(\pgfkeysvalueof{/tikz/sibling angle})*(\tikzcountgrandchild)}%
  \ifnum\tikztreelevel=1
    \pgftransformrotate{(\pgfkeysvalueof{/tikz/sibling angle})*(\pgfkeysvalueof{/tikz/noc}-1)/2}%
  \fi
  \pgftransformxshift{\the\tikzleveldistance}%
  \ifnum\tikztreelevel=2
    \global\advance\tikzcountgrandchild by1
 \fi
}

\begin{document}
\tikzset{overall rotation/.initial=0,
    overall xshift/.initial=0pt,
    overall yshift/.initial=0pt,
    Xshift/.style={xshift=#1,overall xshift=#1},
    Yshift/.style={yshift=#1,overall yshift=#1},
    noc/.initial=0,
    branch color/.style={
        concept color=#1!white,
        every child/.append style={concept color=#1!white!30!white},
    }
}

\begin{tikzpicture}
    \begin{scope}[text width=1.5cm,align=flush center,
            mindmap,growth function=\tikz@grow@concentric,
            overall rotation=-45,
            sibling angle=360/30,
            nodes={concept},
            concept color=green!70!black,
            root concept/.append style={ ball color=green!50, line width=1.5ex,text=green!40!black,font=\huge\bfseries\scshape,minimum size=4.5cm,text width=4.5cm,},                   
            level 1/.style={,level distance=8cm,font=\Large,minimum size=3.0cm,text width=2.5cm,},
            level 2/.style={level distance=12cm,font=\large,minimum size=2.0cm,text width=2.0cm}
        ]
        \node [root concept]{Clients} 
        child[noc=3,branch color=green!70]{node {Retail} 
            child[] {node {CGPI}} 
            child[] {node {Banques priv\'ees}} 
            child[] {node {Retail banking}} 
        }
        child[noc=3,branch color=green!70]{node {ALM} 
            child[] {node {Mutuelles}} 
            child[] {node {Assurances}} 
            child[] {node {Caisse de retraite}}         
        } 
        child[noc=1,branch color=green!80]{node {Directions financi\'eres} 
            child[] {node {Corporate}} 
        } 
        child[noc=3,branch color=green!70]{node {Instrument specialists} 
            child {node {Asset Managers traditionnels}} 
            child {node {Hedge funds}} 
            child {node {Trading desks form other banks}} 
        } 
        ;
    \end{scope}

    \begin{scope}[Xshift=-5cm,text width=1.5cm,align=flush center,
            mindmap,growth function=\tikz@grow@concentric,
            overall rotation=45,
            sibling angle=360/30,
            nodes={concept},
            concept color=yellow!70!black,
            root concept/.append style={ ball color=yellow!50, line width=1.5ex,text=yellow!40!black,font=\huge\bfseries\scshape,minimum size=4.5cm,text width=4.5cm,},                   
            level 1/.style={,level distance=8cm,font=\Large,minimum size=3.0cm,text width=2.5cm,},
            level 2/.style={level distance=12cm,font=\large,minimum size=2.0cm,text width=2.0cm}
        ]
        \node [root concept]{Suppliers} 
        child[noc=3,branch color=yellow!70]{node {Retail} 
            child[] {node {CGPI}} 
            child[] {node {Banques priv\'ees}} 
            child[] {node {Retail banking}} 
        }
        child[noc=3,branch color=yellow!70]{node {ALM} 
            child[] {node {Mutuelles}} 
            child[] {node {Assurances}} 
            child[] {node {Caisse de retraite}}         
        } 
        child[noc=1,branch color=yellow!80]{node {Directions financi\'eres} 
            child[] {node {Corporate}} 
        } 
        child[noc=3,branch color=yellow!70]{node {Instrument specialists} 
            child {node {Asset Managers traditionnels}} 
            child {node {Hedge funds}} 
            child {node {Trading desks form other banks}} 
        } 
        ;
    \end{scope}

\end{tikzpicture}
\end{document}

enter image description here

3
  • 1
    It works like a charm ! I'll be able to show you the result soon :) Merci for your help again. – JeT Mar 14 '20 at 14:29
  • 2
    @Julien-ElieTaieb You're welcome! I plan to see a bit later if one can make it more user friendly. – user194703 Mar 14 '20 at 14:32
  • I'd be happy to see it ! I posted the result of your help today. – JeT Mar 14 '20 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.