i'm not able to draw arrows like red ones :(. any suggestions? Also this yellow block type doesn't seems cool..

enter image description here

code is here

\usetikzlibrary{shapes.geometric, arrows}
\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=gray!10]
\tikzstyle{decision} = [diamond,aspect=2, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=yellow!10]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{tikzpicture}[node distance=2.5cm,auto,>=latex']

\node (1) [process] {downsampling};
\node (2) [process, below of=1] {framing};
\node (3) [process, below of=2] {iterazione};
\node (4) [process, below of=3] {subframing};
\node (5) [process, below of=4] {sub-iterazione};
\node (6) [decision, below of=5,yshift=-1cm] {possibile decadimento e non fine del sub frame};
\node (7) [process, below of=6,yshift=-1cm] {calcolo \rt};
\node (8) [process, left of=7, xshift=-3cm] {stima \rt globale};

\draw [arrow] (1) -- (2);
\draw [arrow] (2) -- (3);
\draw [arrow] (3) -- (4);
\draw [arrow] (4) -- (5);
\draw [arrow] (5) -- (6);
\draw [arrow] (6) -- node[anchor=east] {sì} (7);
\draw [arrow] (6) |- node[anchor=south,left] {no} (3);
\draw [arrow] (7) -- (8);

  • Welcome to TeX.SX. Please complete your Minimal Working Example with the necessary things that allows compilation, right now it doesn't. Also, we encourage you to read both guides linked to this comment to learn about our style.
    – osjerick
    Nov 7 '15 at 19:09

I'm preaty sure that I already answer on similar question ... anyway, here is slighly modified my answer:


    node distance = 5mm and 7mm,
      start chain = going below,
     arrow/.style = {thick,-{Stealth[length=5pt,width=4pt]}},
    basics/.style = {draw=black,
                     minimum width=30mm, minimum height=7.5mm, align=center,
                     join= by arrow, on chain},
      start/.style = {rectangle, rounded corners, fill=red!30, basics},
      block/.style = {rectangle, fill=blue!30, basics},
   decision/.style = {diamond, aspect=2,text width=44mm, inner xsep=-1em, basics},
\node (n1) [start] {downsampling};
\node (n2) [block] {framing};
\node (n3) [block] {iterazione};
\node (n4) [block] {subframing};
\node (n5) [block] {sub-iterazione};
\node (n6) [decision] {possibile decadimento e non fine del sub frame};
\node (n7) [block] {calcolo ??};
\node (n8) [block, left=of n7.west] {stima ?? globale};

\draw [red,arrow] (n6.west) node[above left]   {no} -- + (-7mm,0) |- (n3.west);
\draw [red,arrow] ($(n6.south)!0.5!(n7.north)$) node[left] {si} -| ([xshift=5mm] n6.east) |- (n2);

Above MWE generate the following picture:

enter image description here

  • @user2054758, well, your flowchart is not clear to me. The decision is unusual: it has deadlock cycle. As you see, I separate draw only loops, connection between successive block are done by joint option. So, if you need to change anything, this should be easy. Happy TeXing!
    – Zarko
    Nov 7 '15 at 19:32
  • a question, i have this error: I can't find file `tikzlibraryarrows.meta.code.tex' ...y{arrows.meta,calc,chains,shapes.geometric} Nov 7 '15 at 19:34
  • Which version of TikZ you have? Library arrows.meta exist from version 3.0.0 further (recent is 3.0.1a). Try to upgrade your TikZ instalation.
    – Zarko
    Nov 7 '15 at 19:42
  • @user2054758 You can be thankful by upvoting Zarko's answer. ;)
    – osjerick
    Nov 7 '15 at 21:14
  • 1
    @user2054758, you no need to use arrows.meta library ... however, it intention is to replace arrows library. In this context I prefer to use new one. If you update your TikZ (as you said above), than use of arrows.meta should not be a problem. I strongly encorage you to read TikZ manual. It is hugre :-(, but for start going through chapter "TikZ is kein ziechenprogram will give you good basic knowledge about TikZ.
    – Zarko
    Nov 7 '15 at 21:26

There is a lot of ways to do this thing. Here is my attempt to teach you what is happening here:

enter image description here


\usetikzlibrary{arrows.meta, shapes}

        % Style Definition
        \tikzset{process/.style={rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=gray!10, node distance=2.5cm}}
        \tikzset{decision/.style={diamond,aspect=2, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=yellow!10, node distance=2.5cm}}

        % Node Placement
        \node[process] (START) {First Process};
        \node[process, below of=START] (SECOND) {Second Process};
        \node[decision, below of=SECOND] (DEC) {First Decision};
        \node[process, below of=DEC] (THIRD) {Third Process};

        % Node Connection
        \draw[->] (START) -- (SECOND);
        \draw[->] (SECOND) -- (DEC);
        \draw[->] (DEC) -- coordinate (midDT) (THIRD);
        \draw[->] (DEC) -- +(-2.5,0) |- (START);
        \draw[->] (midDT) -- +(2.5,0) |- (SECOND);

As you can see there is three process nodes and one decision node. Every style applied to them is defined by using a \tikzset command rather than \tikzstyle because of this question/answers. Note that within each style definition is a node distance key that facilitates node placement when you use relative positioning, to avoid a lot of shifting declarations.

The flowchart is drawn in three parts: One for style definition, without them the nodes would not be easily fancy styled, this includes node distance declarations described above; one for nodes placement; and one for node interconnections. I draw every interconnection by using the \draw command and path operations (--, |-) between node names that point to coordinates into the 2D plane.

When the (THIRD) node is connected to (DEC) I've used a coordinate (<name>) to define the midpoint of the connection line. The you can draw your desired lines using two path operations: first one, to go from a node/coordinate to outside that node/coordinate by some desired amount (I chose 2.5) applied only to the x coordinate, that's what you can see (NODE) -- +(2.5,0), the -- path operation orders TikZ to go horizontally from one coordinate to another; second and last, to go from this last coordinate to a desired node, first vertically a then horizontally, ordering TikZ to do this using a |- path operation: +(2.5,0) |- (NODE). I've used arrows.meta library (available from PGF/TikZ 3.0.0) to provide better Stealth arrows to draw.

I know you know many of these things but may help someone else.

  • i didn't knew, thanks a lot for clear explanation! Nov 7 '15 at 20:46

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.