I am trying to replicate the following picture using tikz. But I am totally lost. Do you have any suggestion? Indeed, I am not even sure whether tikz can be used. Is there any chance I can decide the dimension of the picture, say the width and the height? Thanks in advance.

enter image description here


Tikz can definitely do this. Here's a draft, you'll have to customize it and probably learn a little bit more about Tikz to reach your goal.


\draw[line width=5pt,Orchid!50!black] (0,0) node[left,black] {BEGIN} -- (8,0) arc (-90:90:1.5) -- (3.5,3) node[above,midway,black]{REPEAT};
\draw[line width=5pt,Orchid!50!black,->] (3.5,3)  arc (90:170:3);
\draw[Orchid!50!black,thick,fill=Orchid] (2,0) circle (.5cm) node[black,above,yshift=.5cm] {Idea};
\draw[Orchid!50!black,thick,fill=Orchid] (4,0) circle (.5cm) node[black,above,yshift=.5cm] {Research};
\draw[Orchid!50!black,thick,fill=Orchid] (6 ,0) circle (.5cm) node[black,above,yshift=.5cm] {Write};
\draw[OliveGreen!50!black,thick,fill=OliveGreen] (8,0) circle (.5cm) node[black,above,yshift=.5cm] {Publish};
\foreach \i in {1,3,5,7}{
\draw[Orchid!50!black,->,line width=5pt,line width=5pt] (\i,0) -- ++(1,-1.5) node[below,black] {Perish !};


enter image description here


Following a slightly different approach from mvienney's answer, you may find this a bit easier to tweek to your needs, as it has no absolute coordinates and only a few relative ones.

    track/.style={line width=3pt,color=interm-color},
    interm/.style={draw,line width=1pt,circle,minimum size=0.75cm,
    final/.style={draw,line width=1pt,circle,minimum size=0.75cm,
  \node (begin) {BEGIN};
  \node[interm,right=of begin] (idea) {};
  \node[above] at (idea.north) {Idea};
  \draw[track] (begin) -- (idea);
  \node[interm,right=of idea] (research) {};
  \node[above] at (research.north) {Research};
  \draw[track] (idea) -- (research);
  \node[interm,right=of research] (write) {};
  \node[above] at (write.north) {Write};
  \draw[track] (research) -- (write);
  \node[final,right=of write] (publish) {};
  \node[above] at (publish.north) {\textbf{Publish}};
  \draw[track] (write) -- (publish);
  \node[below=of idea] (p1) {Perish!};
  \draw[track,-stealth'] ($(idea.west) + (-0.5cm, 0)$) -- (p1);
  \node[below=of research] (p2) {Perish!};
  \draw[track,-stealth'] ($(research.west) + (-0.5cm, 0)$) -- (p2);
  \node[below=of write] (p3) {Perish!};
  \draw[track,-stealth'] ($(write.west) + (-0.5cm, 0)$) -- (p3);
  \node[below=of publish] (p4) {Perish!};
  \draw[track,-stealth'] ($(publish.west) + (-0.5cm, 0)$) -- (p4);
  \draw[track,-stealth'] (publish.east)
    arc [start angle=-90, end angle=90, radius=0.6cm]
    -- node[above,black] {REPEAT}
    ($(idea) + (0.6cm, 1.2cm)$)
    .. controls ($(idea) + (0, 1.2cm)$) and ($(idea) + (-0.8cm, +1.2cm)$) ..
    ($(idea.west) + (-0.5cm, +0.1cm)$);

It produces this:


  • thanks for this. I spent a couple of hours and I was able to modify previous suggestion to get what i wanted. But i will take some ideas from your example as well. – Dario Aug 31 '17 at 1:45

For fun, a short pstricks solution:

    \documentclass[12pt, a4paper, svgnames, x11names]{article}
    \usepackage{auto-pst-pdf} % for pdflatex compilation. Requires pdflatex --enable-write18 (MiKTeX)
                                                    % or pdflatex -shell-escape (TeX Live, MacTeX)


    \psset{framearc=.2, framesep =3pt, arrowinset = 0, arrowsize = 8pt, dotsize=25pt, linejoin=1}
    \begin{psmatrix}[rowsep=1, colsep=1.1, mnode =r]% defines the distance between two frames
    \rnode[r]{Beg}{BEGIN } & \pnode{I} & \pnode{R} & \pnode{W} & \pnode{Pu} \\
     & \rnode{PI}{Perish! } & \rnode{PR}{Perish! } & \rnode{PW}{Perish! } & \rnode{Peu}{Perish! }\\
     \psset{linewidth=0.7ex, linecolor =DarkOrchid4}
     \foreach \D/\Text in {I/Idea, R/Research, W/Write, Pu/\textbf{Publish}}{\nput[labelsep=15pt]{90}{\D}{\Text}}
     \foreach\B/\E in {I/R, R/W, W/Pu} { \ncline{\B}{\E}}
     \psset{armA=1.2, angleB=120, arrows=->, nodesepB=3pt, linearc=0.7}
     \foreach\B/\E in {Beg/PI, I/PR, R/PW, W/Peu} {\ncdiagg{\B}{\E}}
     \ncangles[nodesepA=3pt, nodesepB=6pt, angleA=0,angleB=60, armA=1, armB=1.5]{Pu}{EoL}
     \nbput[npos=2.5, labelsep=2pt]{REPEAT}
     \foreach \D in {I, R, W}{\psdot[linecolor=Thistle3](\D)}


enter image description here

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.