Here's a possibility, using the powerful etoc
package and a TikZ tree (this is a variation of the "molecule" style presented in the package documentation). In this example, provision was made for chapters, sections and subsections but it can easily be adapted to include also parts (I just read this in the question); just the numbers are shown but this can also be modified to include the titles (this seems not a very good idea since the ToC would be too large). The ToC is fully hyperlinked:
\documentclass[dvipsnames]{book}
\usepackage{tikz}
\usepackage{etoc}
\usetikzlibrary{trees}
\usepackage[colorlinks=true,linkcolor=white]{hyperref}
\newtoks\treetok
\newtoks\tmptok
\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
#1\expandafter\expandafter\expandafter
{\expandafter\the\expandafter #1#2}}
\newtoks\parttok
\newtoks\chaptertok
\newtoks\sectiontok
\newtoks\subsectiontok
\newcommand*\treenode {}
\newcommand*{\appendchildtree}[2]{% token list t1 becomes: t1 child {t2}
\edef\tmp{\the#1 child {\the#2}}%
#1\expandafter{\tmp}%
}
\newcommand*{\preparetreenode}{%
\tmptok\expandafter{\etocthelinkednumber}%
\edef\treenode{node {\the\tmptok}}%
}
\etocsetstyle{chapter}
{\etocskipfirstprefix}
{\appendchildtree\treetok\chaptertok}
{\preparetreenode
\chaptertok\expandafter{\treenode}}
{\appendchildtree\treetok\chaptertok}
\etocsetstyle{section}
{\etocskipfirstprefix}
{\appendchildtree\chaptertok\sectiontok}
{\preparetreenode
\sectiontok\expandafter{\treenode}}
{\appendchildtree\chaptertok\sectiontok}
\etocsetstyle{subsection}
{\etocskipfirstprefix}
{\appendchildtree\sectiontok\subsectiontok}
{\preparetreenode
\subsectiontok\expandafter{\treenode}}
{\appendchildtree\sectiontok\subsectiontok}
\etocsettocstyle
{\treetok{\node[text width=2cm,align=center] {\hyperref[part:overview]{Discrete data analysis with R}}}}
{\global\appendtotok\treetok{ ;}}
\begin{document}
\begin{figure}
\centering
\etocsetnexttocdepth{subsection}
\tableofcontents
\label{toc:molecule}
\begin{tikzpicture}[
grow cyclic,
level 1/.style={
text width=1.5cm,
align=center,
level distance=3cm,
sibling angle=90
},
level 2/.style={
text width=1cm,
align=center,
level distance=2cm,
sibling angle=72
},
level 3/.style={
text width=0.7cm,
align=center,
level distance=2cm,
sibling angle=50
},
every node/.style={
ball color=teal!90,
circle,text=white
},
edge from parent path={
[very thick,color=teal] (\tikzparentnode) --(\tikzchildnode)}
]
\the\treetok
\end{tikzpicture}
\end{figure}
\chapter{Test chapter one}
\section{Section one one}
\subsection{Subsection one one one}
\subsection{Subsection one one two}
\section{Section one two}
\subsection{Subsection one two one}
\subsection{Subsection one two two}
\chapter{Test chapter two}
\section{Section two one}
\subsection{Subsection two one one}
\subsection{Subsection two one two}
\section{Section two two}
\subsection{Subsection two two one}
\subsection{Subsection two two two}
\section{Section two three}
\subsection{Subsection two three one}
\subsection{Subsection two three two}
\chapter{Test chapter three}
\section{Section three one}
\subsection{Subsection three one one}
\subsection{Subsection three one two}
\chapter{Test chapter four}
\section{Section four one}
\subsection{Subsection four one one}
\subsection{Subsection four one two}
\subsection{Subsection four one three}
\section{Section four two}
\subsection{Subsection four two one}
\subsection{Subsection four two two}
\subsection{Subsection four two three}
\end{document}

Here is an attempt to mimick exactly the original design.
We only need parts and sections. There are some comments trying to explain the procedure which is a specialization and customization of the generic one above.
\documentclass[12pt,oneside, tikz, ignorerest=false]{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\pagestyle{empty}
\usepackage{etoc}
% \usepackage{hyperref}% if links are wanted
\begin{document}
\newtoks\treetok
\newtoks\parttok
\newtoks\sectiontok
\newcommand*\treenode {} % just to check we don't overwrite something
\newcommand*\tmprotate {} % just to check we don't overwrite something
\newcommand*\tmpoption {} % just to check we don't overwrite something
\newcommand*\tmpstuff {} % just to check we don't overwrite something
\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
#1\expandafter\expandafter\expandafter{\expandafter\the\expandafter #1#2}}
\newcommand*{\appendchildtree}[3]{%
% this is to construct "t1 child [concept color= #3]{t2}" from #1=t1 and #2=t2
% t1 and t2 are two toks variable (not macros)
% #3 = for example teal!60
\edef\tmpstuff {\the#1 child [concept color = #3]{\the#2}}%
#1\expandafter {\tmpstuff }%
}
\newcounter{partco}
\etocsetstyle{part}
{}
{}
{\toks0 \expandafter{\etocthelinkednumber}%
\toks2 \expandafter{\etocthelinkedname }%
\stepcounter{partco}%
\ifcase\value{partco}%
\or \def\tmpoption {}%
\def\tmprotate {}% first
\or \def\tmpoption {[concept]}%
\def\tmprotate {[clockwise from = 60]}% second
\else\def\tmpoption {}%
\def\tmprotate {[counterclockwise from = 90]}% third and higher
\fi
% define the part node
\edef\treenode{node \tmpoption {\the\toks0. \the\toks2} \tmprotate }%
% this is a starting point which will be filled it by the section children
\parttok\expandafter{\treenode}}
{}
\etocsetstyle{section}
{}
{}
{\toks0 \expandafter{\etocthelinkednumber}%
\toks2 \expandafter{\etocthelinkedname }%
% define the section node
\edef\treenode {node {\the\toks0 \space\the\toks2}}
\sectiontok\expandafter{\treenode}%
% update current part tree with this section node, adding the correct color
\ifcase\value{partco}%
\or \appendchildtree\parttok\sectiontok {teal!30}% first
\or \appendchildtree\parttok\sectiontok {yellow!40}% second
\else\appendchildtree\parttok\sectiontok {green!30}% third etc...
\fi }
% This updates the global tree with the data from the
% part and all its children sections
{\ifcase\value{partco}%
\or \appendchildtree\treetok\parttok {teal!60}% first
\or \appendchildtree\treetok\parttok {yellow!80}% second
\else\appendchildtree\treetok\parttok {green!50}% third and next ...
\fi
}
\etocsettocstyle
{\treetok{\node{\textbf{Discrete Data Analysis with R}} [clockwise from=60]}}
{\global\appendtotok\treetok{ ;}}
% The \global above is mandatory because etoc always typesets TOC inside a group
\tableofcontents
% \showthe\treetok % debugging
\begin{tikzpicture}[grow cyclic, text width=2cm,
align=flush center,
every node/.style=concept,
concept color=orange!60,
level 1/.style={level distance=7cm,sibling angle=120},
level 2/.style={level distance=4cm,sibling angle=45}]
\the\treetok
\end{tikzpicture}
\part {Getting Started}
\section {Introduction}
\section {Working with Categorical Data}
\section {Discrete Distributions}
\part {Exploratory Methods}
\section {Two-way Contingency Tables}
\section {Mosaic Displays}
\section {Correspondence Analysis}
\part {Model-building Methods}
\section {Logistic Regression Models}
\section {Polytomous Responses}
\section {Loglinear and Logit Models}
\section {Extending Loglinear Models}
\section {Generalized Linear Models}
\end{document}

And a modification to the above code allowing to draw lines between nodes to signal interconnections; each part node is named part-#
and each section node is named section-#
in this way the node names can be used to draw arbitrary paths:
\documentclass[12pt,oneside, tikz, ignorerest=false]{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\pagestyle{empty}
\usepackage{etoc}
% \usepackage{hyperref}% if links are wanted
\begin{document}
\newtoks\treetok
\newtoks\parttok
\newtoks\sectiontok
\newcommand*\treenode {} % just to check we don't overwrite something
\newcommand*\tmprotate {} % just to check we don't overwrite something
\newcommand*\tmpoption {} % just to check we don't overwrite something
\newcommand*\tmpstuff {} % just to check we don't overwrite something
\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
#1\expandafter\expandafter\expandafter{\expandafter\the\expandafter #1#2}}
\newcommand*{\appendchildtree}[3]{%
% this is to construct "t1 child [concept color= #3]{t2}" from #1=t1 and #2=t2
% t1 and t2 are two toks variable (not macros)
% #3 = for example teal!60
\edef\tmpstuff {\the#1 child [concept color = #3]{\the#2}}%
#1\expandafter {\tmpstuff }%
}
\newcounter{partco}
% auxiliary counters to name part and section nodes
\newcounter{tmppart}
\newcounter{tmpsection}
\etocsetstyle{part}
{}
{\stepcounter{tmppart}}
{\toks0 \expandafter{\etocthelinkednumber}%
\toks2 \expandafter{\etocthelinkedname }%
\stepcounter{partco}%
\ifcase\value{partco}%
\or \def\tmpoption {[name=part-\thetmppart]}%
\def\tmprotate {}% first
\or \def\tmpoption {[concept,name=part-\thetmppart]}%
\def\tmprotate {[clockwise from = 60]}% second
\else\def\tmpoption {[name=part-\thetmppart]}%
\def\tmprotate {[counterclockwise from = 90]}% third and higher
\fi
% define the part node
\edef\treenode{node \tmpoption {\the\toks0. \the\toks2} \tmprotate }%
% this is a starting point which will be filled it by the section children
\parttok\expandafter{\treenode}}
{}
\etocsetstyle{section}
{}
{\stepcounter{tmpsection}}
{\toks0 \expandafter{\etocthelinkednumber}%
\toks2 \expandafter{\etocthelinkedname }%
% define the section node
\edef\treenode {node [name=section-\thetmpsection] {\the\toks0 \space\the\toks2}}
\sectiontok\expandafter{\treenode}%
% update current part tree with this section node, adding the correct color
\ifcase\value{partco}%
\or \appendchildtree\parttok\sectiontok {teal!30}% first
\or \appendchildtree\parttok\sectiontok {yellow!40}% second
\else\appendchildtree\parttok\sectiontok {green!30}% third etc...
\fi }
% This updates the global tree with the data from the
% part and all its children sections
{\ifcase\value{partco}%
\or \appendchildtree\treetok\parttok {teal!60}% first
\or \appendchildtree\treetok\parttok {yellow!80}% second
\else\appendchildtree\treetok\parttok {green!50}% third and next ...
\fi
}
\etocsettocstyle
{\treetok{\node{\textbf{Discrete Data Analysis with R}} [clockwise from=60]}}
{\global\appendtotok\treetok{ ;}}
% The \global above is mandatory because etoc always typesets TOC inside a group
\tableofcontents
% \showthe\treetok % debugging
\begin{tikzpicture}[grow cyclic, text width=2cm,
align=flush center,
every node/.style=concept,
concept color=orange!60,
level 1/.style={level distance=7cm,sibling angle=120},
level 2/.style={level distance=4cm,sibling angle=45}]
\the\treetok
\draw[teal,line width=2pt,dashed]
(section-1) to[out=210,in=35] (section-7);
\draw[green!50,line width=2pt,dashed]
(section-11) to[out=-40,in=210] (section-6);
\end{tikzpicture}
\part {Getting Started}
\section {Introduction}
\section {Working with Categorical Data}
\section {Discrete Distributions}
\part {Exploratory Methods}
\section {Two-way Contingency Tables}
\section {Mosaic Displays}
\section {Correspondence Analysis}
\part {Model-building Methods}
\section {Logistic Regression Models}
\section {Polytomous Responses}
\section {Loglinear and Logit Models}
\section {Extending Loglinear Models}
\section {Generalized Linear Models}
\end{document}

etoc
package seems the tool to use here.[clockwise from = 105]
for the first part and[clockwise from = -15]
for the second. But there must be some TikZ way to have it done automatically. Are you more interested into the TikZ issues, or the first one which triggered the interest ofjfbu
to get the TOC done automatically from the.toc
file?