One can cook up some growth function for that. Here is a version that stores the configuration in the aux file and uses it in the second run. It basically records how many nodes arise at a given level and uses this information for the layout. It does reconstruct the graph the code of which you are asking for qualitatively.
\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap,decorations}
\makeatletter
\newcount\tikzcountchildi
\newcount\tikzcountchildii
\newcount\tikzcountchildiii
\newcount\tikzcountchildiv
\newcount\tikzcountchildv
\newcount\tikzcountchildvi
\tikzset{garlic growth/.style={growth function=\tikz@grow@garlic,
/tikz/mmap/name=#1,mmap/#1/.is family,
mmap/initialize counts,
execute at end scope={%
\tikz@mmap@store@aux{n-i}{\the\tikzcountchildi}%
\tikz@mmap@store@aux{n-ii}{\the\tikzcountchildii}%
\tikz@mmap@store@aux{n-iii}{\the\tikzcountchildiii}%
\tikz@mmap@store@aux{n-iv}{\the\tikzcountchildiv}%
\tikz@mmap@store@aux{n-v}{\the\tikzcountchildv}%
\tikz@mmap@store@aux{n-vi}{\the\tikzcountchildvi}}},
mmap/.cd,initialize counts/.code={\tikzcountchildi=0%
\tikzcountchildii=0%
\tikzcountchildiii=0%
\tikzcountchildiv=0%
\tikzcountchildv=0%
\tikzcountchildvi=0%
}
}
\def\tikz@mmap@store@aux#1#2{%
\immediate\write\@mainaux{\string\expandafter\xdef\noexpand\csname pgfk@/tikz/mmap/\pgfkeysvalueof{/tikz/mmap/name}/#1\string\endcsname{#2}}}%
\def\tikz@mmap@get@from@aux#1#2{%
\ifcsname pgfk@/tikz/mmap/\pgfkeysvalueof{/tikz/mmap/name}/#1\endcsname
\edef#2{\csname pgfk@/tikz/mmap/\pgfkeysvalueof{/tikz/mmap/name}/#1\endcsname}%
\else
\edef#2{0}%
\fi
}
\newcount\tikzcountgrandchild
\def\tikz@grow@garlic{%
\pgfmathsetmacro{\pgfutil@tempa}{\pgfkeysvalueof{/tikz/mmap/overall rotation}}%
\ifcase\tikztreelevel
\or
\global\advance\tikzcountchildi by1\relax%
\tikz@mmap@get@from@aux{n-i}{\myni}%
\tikz@mmap@get@from@aux{n-ii}{\mynii}%
\tikz@mmap@get@from@aux{n-1-\the\tikzcountchildi}{\mynall}%
\tikz@mmap@get@from@aux{p-1-\the\tikzcountchildi}{\mypi}%
\ifnum\mynii>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}%
*(\pgfkeysvalueof{/tikz/mmap/child weight}*(\mypi)*360/\mynii+%
(1-\pgfkeysvalueof{/tikz/mmap/child weight})*(\tikzcountchildi-1)*360/\myni)}%
\fi
\or
\global\advance\tikzcountchildii by1\relax%
\tikz@mmap@get@from@aux{n-ii}{\mynii}%
\tikz@mmap@get@from@aux{n-1-1}{\mynall}%
\ifnum\mynii>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}%
*(\tikzcountchildii-1-\mynall/2)*360/\mynii}%
\fi
\ifnum\tikznumberofcurrentchild=1\relax
\tikz@mmap@store@aux{n-1-\the\tikzcountchildi}{\the\tikznumberofchildren}%
\tikz@mmap@store@aux{p-1-\the\tikzcountchildi}{\the\numexpr\tikzcountchildii-1}%
\tikz@mmap@store@aux{a-1-\the\tikzcountchildi-\the\tikzcountchildii}{\pgfutil@tempa}%
\fi
\or
\global\advance\tikzcountchildiii by1\relax%
\ifnum\tikznumberofcurrentchild=1\relax
\tikz@mmap@store@aux{n-1-\the\tikzcountchildi-\the\tikzcountchildii}{\the\tikznumberofchildren}%
\tikz@mmap@store@aux{p-1-\the\tikzcountchildi-\the\tikzcountchildii}{\the\numexpr\tikzcountchildiii-1}%
\fi
\tikz@mmap@get@from@aux{n-iii}{\myniii}%
\tikz@mmap@get@from@aux{a-1-1-1}{\bettera}%
\tikz@mmap@get@from@aux{n-1-1-1}{\mynall}%
\ifdim\bettera pt=0pt\relax
\else
\pgfmathsetmacro{\pgfutil@tempa}{\bettera}%
\fi
\ifnum\myniii>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}%
*(\tikzcountchildiii-1-\mynall/2)*360/\myniii}%
\fi
\or
\global\advance\tikzcountchildiv by1\relax%
\tikz@mmap@get@from@aux{n-iv}{\myniv}%
\ifnum\myniv>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}*(\tikzcountchildiv-1)*360/\myniv}%
\fi
\or
\tikz@mmap@get@from@aux{n-v}{\mynv}%
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}*(\tikzcountchildv-1)*360/\mynv}%
\ifnum\mynv>0
\global\advance\tikzcountchildv by1\relax%
\fi
\or
\global\advance\tikzcountchildvi by1\relax%
\tikz@mmap@get@from@aux{n-vi}{\mynvi}%
\ifnum\myvi>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+(\tikzcountchildvi-1)*360/\mynvi}%
\fi
\fi
\pgftransformreset%
\pgftransformshift{\pgfpoint{\pgfkeysvalueof{/tikz/mmap/overall xshift}}%
{\pgfkeysvalueof{/tikz/mmap/overall yshift}}}%
\pgftransformrotate{\pgfutil@tempa}%
\pgftransformxshift{\the\tikzleveldistance}%
}
\makeatother
\begin{document}
\tikzset{mmap/.cd,
name/.initial=undef,
overall rotation/.initial=0,
overall xshift/.initial=0pt,
overall yshift/.initial=0pt,
sign/.initial=1,
child weight/.initial=0.5,
/tikz/.cd,
Xshift/.style={xshift=#1,mmap/overall xshift=#1},
Yshift/.style={yshift=#1,mmap/overall yshift=#1},
branch color/.style={
concept color=#1!80,ball color=#1!50,
every child/.append style={concept color=#1!50},
}
}
\begin{tikzpicture}
\begin{scope}[
mindmap,garlic growth=A,mmap/child weight=0,
mmap/overall rotation=-70,mmap/sign=-1,
nodes={concept,align=center, text width=2.5cm,inner sep=1mm},
concept color=orange!60,
level 1/.style={nodes=concept,
%every child/.append style={concept color=orange},
level distance=5cm,
},
level 2/.style={%opacity=0,
%every child/.append style={concept color=blue},
level distance=10cm,
minimum size=2.0cm
},
level 3/.style={%opacity=0,
%every child/.append style={concept color=green!70!black},
level distance=15cm,sibling angle=40,
minimum size=2.0cm,
},
level 4/.style={%opacity=0,
%level distance=20cm,
minimum size=2.0cm,text width=2.0cm
}
]
\node [root concept,ball color=orange!50]{Core}
child[branch color=yellow]{node[shading=ball] {Core-1}
child {node {Core-1-1}
child {node {Core-1-1-1}}
child {node {Core-1-1-2}}
child {node {Core-1-1-3}}
}
child {node {Core-1-2}
child {node {Core-1-2-1}}
child {node {Core-1-2-2}}
child {node {Core-1-2-3}}
}
child {node {Core-1-3}
child {node {Core-1-3-1}}
}
child {node {Core-1-4}
child {node {Core-1-4-1}}
}
child {node {Core-1-5}
child {node {Core-1-5-1}}
child {node {Core-1-5-2}}
}
}
child[branch color=blue]{node[shading=ball] {Core-2}
child {node {Core-2-1}
child {node {Core-1-1-1}}
child {node {Core-1-1-2}}
}
child {node {Core-2-2}
child {node {Core-2-2-1}}
child {node {Core-2-2-2}}
child {node {Core-2-2-3}}
child {node {Core-2-2-4}}
}
}
child[branch color=red]{node[shading=ball] {Core-3}
child {node {Core-3-1}
child {node {Core-3-1-1}}
child {node {Core-3-1-2}}
}
child {node {Core-3-2}
child {node {Core-3-2-1}}
child {node {Core-3-2-2}}
}
child {node {Core-3-3}
child {node {Core-3-3-1}}
child {node {Core-3-3-2}}
}
child {node {Core-3-4}
}
}
child[branch color=gray]{node[shading=ball] {Core-4}
child {node {Core-4-1}
child {node {Core-4-1-1}}
child {node {Core-4-1-2}}
}
child {node {Core-4-2}
child {node {Core-4-2-1}}
child {node {Core-4-2-2}}
}
child {node {Core-4-3}
child {node {Core-4-3-1}}
child {node {Core-4-3-2}}
}
child {node {Core-4-4}
}
}
child[branch color=orange]{node[shading=ball] {Core-5}
child {node {Core-5-1}
child {node {Core-5-1-1}}
}
child {node {Core-5-2}
child {node {Core-5-2-1}}
child {node {Core-5-2-2}}
}
child {node {Core-5-3}
child {node {Core-5-3-1}}
child {node {Core-5-3-2}}
}
child {node {Core-5-4}
}
child {node {Core-5-5}
}
}
;
\end{scope}
\end{tikzpicture}
\end{document}

In other cases one has to help manually
\documentclass[tikz,border=9]{standalone}
\usetikzlibrary{mindmap,decorations}
\makeatletter
\newcount\tikzcountchildi
\newcount\tikzcountchildii
\newcount\tikzcountchildiii
\newcount\tikzcountchildiv
\newcount\tikzcountchildv
\newcount\tikzcountchildvi
\tikzset{garlic growth/.style={growth function=\tikz@grow@garlic,
/tikz/mmap/name=#1,mmap/#1/.is family,
mmap/initialize counts,
execute at end scope={%
\tikz@mmap@store@aux{n-i}{\the\tikzcountchildi}%
\tikz@mmap@store@aux{n-ii}{\the\tikzcountchildii}%
\tikz@mmap@store@aux{n-iii}{\the\tikzcountchildiii}%
\tikz@mmap@store@aux{n-iv}{\the\tikzcountchildiv}%
\tikz@mmap@store@aux{n-v}{\the\tikzcountchildv}%
\tikz@mmap@store@aux{n-vi}{\the\tikzcountchildvi}}},
mmap/.cd,initialize counts/.code={\tikzcountchildi=0%
\tikzcountchildii=0%
\tikzcountchildiii=0%
\tikzcountchildiv=0%
\tikzcountchildv=0%
\tikzcountchildvi=0%
}
}
\def\tikz@mmap@store@aux#1#2{%
\immediate\write\@mainaux{\string\expandafter\xdef\noexpand\csname pgfk@/tikz/mmap/\pgfkeysvalueof{/tikz/mmap/name}/#1\string\endcsname{#2}}}%
\def\tikz@mmap@get@from@aux#1#2{%
\ifcsname pgfk@/tikz/mmap/\pgfkeysvalueof{/tikz/mmap/name}/#1\endcsname
\edef#2{\csname pgfk@/tikz/mmap/\pgfkeysvalueof{/tikz/mmap/name}/#1\endcsname}%
\else
\edef#2{0}%
\fi
}
\newcount\tikzcountgrandchild
\def\tikz@grow@garlic{%
\pgfmathsetmacro{\pgfutil@tempa}{\pgfkeysvalueof{/tikz/mmap/overall rotation}}%
\ifcase\tikztreelevel
\or
\global\advance\tikzcountchildi by1\relax%
\tikz@mmap@get@from@aux{n-i}{\myni}%
\tikz@mmap@get@from@aux{n-ii}{\mynii}%
\tikz@mmap@get@from@aux{n-1-\the\tikzcountchildi}{\mynall}%
\tikz@mmap@get@from@aux{p-1-\the\tikzcountchildi}{\mypi}%
\ifnum\mynii>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}%
*(\pgfkeysvalueof{/tikz/mmap/child weight}*(\mypi)*360/\mynii+%
(1-\pgfkeysvalueof{/tikz/mmap/child weight})*(\tikzcountchildi-1)*360/\myni)}%
\fi
\or
\global\advance\tikzcountchildii by1\relax%
\ifnum\tikznumberofcurrentchild=1\relax
\tikz@mmap@store@aux{n-1-\the\tikzcountchildi}{\the\tikznumberofchildren}%
\tikz@mmap@store@aux{p-1-\the\tikzcountchildi}{\the\numexpr\tikzcountchildii-1}%
\fi
\tikz@mmap@get@from@aux{n-ii}{\mynii}%
\tikz@mmap@get@from@aux{n-1-1}{\mynall}%
\ifnum\mynii>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}%
*(\tikzcountchildii-1-\mynall/2)*360/\mynii}%
\fi
\or
\global\advance\tikzcountchildiii by1\relax%
\ifnum\tikznumberofcurrentchild=1\relax
\tikz@mmap@store@aux{n-1-\the\tikzcountchildi-\the\tikzcountchildii}{\the\tikznumberofchildren}%
\tikz@mmap@store@aux{p-1-\the\tikzcountchildi-\the\tikzcountchildii}{\the\numexpr\tikzcountchildiii-1}%
\fi
\tikz@mmap@get@from@aux{n-iii}{\myniii}%
\ifnum\myniii>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}%
*(\tikzcountchildiii-1)*360/\myniii}%
\fi
\or
\global\advance\tikzcountchildiv by1\relax%
\tikz@mmap@get@from@aux{n-iv}{\myniv}%
\ifnum\myniv>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}*(\tikzcountchildiv-1)*360/\myniv}%
\fi
\or
\tikz@mmap@get@from@aux{n-v}{\mynv}%
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+\pgfkeysvalueof{/tikz/mmap/sign}*(\tikzcountchildv-1)*360/\mynv}%
\ifnum\mynv>0
\global\advance\tikzcountchildv by1\relax%
\fi
\or
\global\advance\tikzcountchildvi by1\relax%
\tikz@mmap@get@from@aux{n-vi}{\mynvi}%
\ifnum\myvi>0
\pgfmathsetmacro{\pgfutil@tempa}{\pgfutil@tempa+(\tikzcountchildvi-1)*360/\mynvi}%
\fi
\fi
\pgftransformreset%
\pgftransformshift{\pgfpoint{\pgfkeysvalueof{/tikz/mmap/overall xshift}}%
{\pgfkeysvalueof{/tikz/mmap/overall yshift}}}%
\pgftransformrotate{\pgfutil@tempa}%
\pgftransformxshift{\the\tikzleveldistance}%
}
\makeatother
\begin{document}
\tikzset{mmap/.cd,
name/.initial=undef,
overall rotation/.initial=0,
overall xshift/.initial=0pt,
overall yshift/.initial=0pt,
sign/.initial=1,
child weight/.initial=0.5,
/tikz/.cd,
Xshift/.style={xshift=#1,mmap/overall xshift=#1},
Yshift/.style={yshift=#1,mmap/overall yshift=#1},
branch color/.style={
concept color=#1!60,
every child/.append style={concept color=#1!30},
}
}
\begin{tikzpicture}
\begin{scope}[
mindmap,garlic growth=A,mmap/child weight=0,
mmap/overall rotation=-45,mmap/sign=1,
nodes={concept,align=center, text width=2.5cm,inner sep=1mm},
concept color=orange!60,
level 1/.style={nodes={concept},
every child/.append style={concept color=orange},
level distance=5cm,
},
level 2/.style={%opacity=0,
every child/.append style={concept color=blue},
nodes={concept},
level distance=10cm,
minimum size=2.0cm
},
level 3/.style={%opacity=0,
every child/.append style={concept color=green!70!black},
level distance=5cm,sibling angle=40,
minimum size=2.0cm,
},
level 4/.style={opacity=0,
level distance=14cm,
minimum size=2.0cm,text width=2.0cm
}
]
\node [root concept]{Dimension finie}
child{node {EV de DF}% [clockwise from=0]
child {node {L.\ Steinitz}
[clockwise from=0]
child {node {T.\ Base interm\'ediaire}
child {node {T.\ Base incompl\`ete}}
}
child {node {P.\ Dim infinie}}
}
child {node {T.\ Dim de f.\ libres, g\'en\'eratrices, bonux 1}
[clockwise from=-20]child{node{T.\ Bonux 2}}
}
child {node {P.\ Dim d'un produit}}
child {node {P.\ Grassmann}
[clockwise from=10]
child{node {P.\ Non g\'en\'eralisation de Grassmann}}
child{node {P.\ Dim de sommes directes}
child{node {P.\ Suppl\'ementaires}}
child{node {T.\ Bonux 3 des suppl\'e.}}
}
child{node {D.\ Le rang}
child{node {P.\ sur le rang}}
child{node {P.\ Rang, lib, g\'en, base}}
}
}
}
child{node {ALM}
child{ node (equity) {Equity}
[clockwise from=40]
child { node {Indices}}
child { node {Stocks}}
child { node {ETFs}}
}
child{ node (commo) {Commodities}
[clockwise from=70]
child { node {Soft commo}}
child { node {Precious}}
child { node {Oil/Gas}}
}
child {node {Assurances}}
child {node {Caisse de retraite}}
}
child{node {Directions financieres}
child {node {Corporate}}
}
child{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}

Here a new parameter was introduced, the child weight. In the above examples it is effectively set to 0.5. It determines how much the number of children influence the angle space allocated to a level 1 node. If it is 1, then impact is maximal, in this example it is 0.
So the overall summary is that some things work, and some don't, at least not fully automatically. However, I do not think one could expect an answer to solve the problems completely. What answers on this site can do is to contribute some incremental progress. Progress is more if someone provides a concrete idea (a specific algorithm, say) which one can build on. There are many possible modifications of the above one can explore. One particular promising one may be to marry the mindmap story to graph drawing algorithms (a quick search for that didn't yield results but of course I could have missed them), but this will be spared for future questions and answers.
forestthat has a circular growth. – Apr 18 '20 at 22:36