1

What would be the best way to create such a circular diagram with TikZ?

I found a few similar examples online that I tried to modify, but I always ended up having issues with the following:

  • Can't use formatting nor add a newline in the text nodes
  • No border around text nodes
  • Clockwise arrows aren't circular

Circular diagram draft

Some examples tried, to no avail:

  • I think this one is the best one for you: https://tex.stackexchange.com/a/287293/14757 You can insert line break inside nodes if you use some alignment, eg, \node[align=center]. – Sigur Aug 19 '22 at 13:48

1 Answers1

1

You may want to do it automatically, so adapting this link provided by Sigur in the comments, you can do something like this:

circular diagram with arrows

\documentclass[tikz, border=3.14pt]{standalone}
\usetikzlibrary{arrows.meta, bending}

\begin{document}

\tikzset{mynode/.style={text width=2.5cm, align=center}}

\newcommand{\R}{4cm} % Circle radius
\newcommand{\texta}{\textbf{Title 1} \\ Description 1}
\newcommand{\textb}{\textbf{Title 2} \\ Description 2}
\newcommand{\textc}{\textbf{Title 3} \\ Description 3}
\newcommand{\textd}{\textbf{Title 4} \\ Description 4}
\newcommand{\texte}{\textbf{Title 5} \\ Description 5}

\begin{tikzpicture}[-{Stealth[bend]}]
    \foreach \a/\t in {90/\texta,18/\textb,-54/\textc,-126/\textd,-198/\texte}
    {
        \ifnum\a=90
            \node[mynode,yshift=-10pt] at (\a:\R) {{\t}};
        \else
            \node[mynode] at (\a:\R) {{\t}};
        \fi
        \draw (\a-15:\R)  arc (\a-15:\a-55:\R);
    } 
\end{tikzpicture}

\end{document}

But you may found the placement a bit odd. So you need to do it manually.
Place the nodes (can be done with the loop) then draw the arrows by try and error.

manual version

    \begin{tikzpicture}[-{Stealth[bend]}]
        \foreach \a/\t in {90/\texta,18/\textb,-45/\textc,-135/\textd,-198/\texte}
            \node[mynode] at (\a:\R) {{\t}};
        \draw (70:\R) arc (70:30:\R);
        \draw (10:\R) arc (10:-35:\R);
        \draw (-55:\R) arc (-55:-125:\R);
        \draw (-145:\R) arc (-145:-190:\R);
        \draw (150:\R) arc (150:110:\R);            
\end{tikzpicture}

SebGlav
  • 19,186
  • 1
    Thanks a lot! Your example works perfectly for my needs. I did try to use the link given by Sigur, but got confused with the arrow placement. Your answer makes it way clearer. – halation044 Aug 19 '22 at 15:11