I am totally new to the package tikz but I am going to make a flow chart for my poster. I used the template provided by this link

I just modify some parts I can understand and the source code is

                % Author: Rasmus Pank Roulund

            rounded corners, 
            % fill=black!10,
            draw=black, very thick,
            text width=10em, 
            minimum height=3em, 
            text centered, 
            on chain},
        line/.style={draw, thick, <-},
            top color=white,
            bottom color=blue!50!black!60!,
            minimum width=8em,
            draw=blue!40!black!90, very thick,
            text width=10em, 
            minimum height=3.5em, 
            text centered, 
            on chain},
        every join/.style={->, thick,shorten >=1pt},
        tubnode/.style={midway, right=2pt},
        [node distance=.8cm,
        start chain=going below,]
             \node[punktchain, join] (intro) {Raw Signal};
             \node[punktchain, join] (probf)      {Pre-pro1};
             \node[punktchain, join] (investeringer)      {pre-pro2};
             \node[punktchain, join] (perfekt) {feature extract};
             \node[punktchain, join, ] (emperi) {model fitting};

  \node[punktchain, join,] (disk) {training};
        \node[punktchain, join,] (makro) {testing};
        \node (asym) [punktchain ]  {Abnormal};

                \begin{scope}[start branch=venstre,
                    %We need to redefine the join-style to have the -> turn out right
                    every join/.style={-, thick, shorten <=1pt}, ]
                \begin{scope}[start branch=hoejre,]
                \node (finans) [punktchain, on chain=going right] {Normal };

        % Now that we have finished the main figure let us add some "after-drawings"
        %% First, let us connect (finans) with (disk). We want it to have
        %% square corners.
        %\draw[|-,-|,->, thick,] (finans.south) |-+(0,-1em)-| (disk.north);
        % Now, let us add some braches. 
        %% No. 1

        %% No. 2
        \draw[tuborg, decoration={brace}] let \p1=(disk.north), \p2=(makro.south) in
            ($(2, \y1)$) -- ($(2, \y2)$) node[tubnode] {Classification};
        %% No. 3
        \draw[tuborg, decoration={brace}] let \p1=(perfekt.north), \p2=(emperi.south) in
            ($(2, \y1)$) -- ($(2, \y2)$) node[tubnode] {Feature Selection};
            \draw[tuborg, decoration={brace}] let \p1=(probf.north), \p2=(investeringer.south) in
            ($(2, \y1)$) -- ($(2, \y2)$) node[tubnode] {Data Preprocessing};

    %%% Local Variables: 
    %%% mode: latex
    %%% TeX-master: t
    %%% End: 

And the output is enter image description here

Here are something I would like;

  1. Centered the two boxes (normal) (abnormal)
  2. Arrows from the upper boxes to (normal) and (abnormal)

  3. Place box (training) and (testing) horizontally without arrow.

  4. Other suggestions make it look professional: like color ...

I draw a picture by hands to make my idea clear. Thanks.

enter image description here


I had to do something similar myself so it was a good exercise.

Tikz experts will find more elegant code I'm sure, but based on the example http://www.texample.net/tikz/examples/labs-schema/ this is what I've achieved: enter image description here

% Define the layers to draw the diagram

% Define block styles
\tikzstyle{materia}=[draw, fill=blue!20, text width=6.0em, text centered,
  minimum height=1.5em,drop shadow]
\tikzstyle{etape} = [materia, text width=8em, minimum width=10em,
  minimum height=3em, rounded corners, drop shadow]
\tikzstyle{texto} = [above, text width=6em, text centered]
\tikzstyle{linepart} = [draw, thick, color=black!50, -latex', dashed]
\tikzstyle{line} = [draw, thick, color=black!50, -latex']
\tikzstyle{ur}=[draw, text centered, minimum height=0.01em]

% Define distances for bordering

\newcommand{\etape}[2]{node (p#1) [etape]

% Draw background
    % Left-top corner of the background rectangle
    \path (#1.west |- #2.north)+(-0.5,0.25) node (a1) {};
    % Right-bottom corner of the background rectanle
    \path (#3.east |- #4.south)+(+0.5,-0.25) node (a2) {};
    % Draw the background
    \path[fill=yellow!20,rounded corners, draw=black!50, dashed]
      (a1) rectangle (a2);
      \path (#3.east |- #2.north)+(0,0.25)--(#1.west |- #2.north) node[midway] (#5-n) {};
      \path (#3.east |- #2.south)+(0,-0.35)--(#1.west |- #2.south) node[midway] (#5-s) {};
      \path (#3.east |- #2.north)+(0.7,0)--(#3.east |- #4.south) node[midway] (#5-w) {};

  \path [linepart] (#1.east) -- node [above]
    {\scriptsize #2} (#3);}

\begin{tikzpicture}[scale=0.7,transform shape]

  % Draw diagram elements
  \path \etape{1}{Raw signal};

  \path (p1.south)+(0.0,-1.5) \etape{2}{Pre-1};
  \path (p2.south)+(0.0,-1.0) \etape{3}{Pre-2};

  \path (p3.south)+(0.0,-1.5) \etape{4}{Feature extract};
  \path (p4.south)+(0.0,-1.0) \etape{5}{Model fitting};

  \path (p5.south)+(-3.0,-2.0) \etape{6}{training};
  \path (p5.south)+(3.0,-2.0) \etape{7}{testing};
  \node [below=of p5] (p6-7) {};

  \path (p6.south)+(0.0,-2.0) \etape{8}{normal};
  \path (p7.south)+(0.0,-2.0) \etape{9}{abnormal};
  \node [below=of p6-7] (p8-9) {};

  % Draw arrows between elements
  \path [line] (p1.south) -- node [above] {} (p2);
  \path [line] (p2.south) -- node [above] {} (p3);
  \path [line] (p3.south) -- node [above] {} (p4);
  \path [line] (p4.south) -- node [above] {} (p5);


  \path [line] (p5.south) -- node [above] {} (bk3-n);
  \path [line] (bk3-s) -- node [above] {} (p8);
  \path [line] (bk3-s) -- node [above] {} (p9);
  \path (bk1-w)+(+6.0,0) node (ur1)[ur] {};
  \path (bk2-w)+(+6.0,0) node (ur2)[ur] {};
  \path (bk3-w)+(+3.0,0) node (ur3)[ur] {};
  \transreceptor{bk1-w}{pre processing}{ur1};
  \transreceptor{bk2-w}{Feature selection}{ur2};
  • Can I drop the small squares on the right and make the dashed arrows to be dashed lines. – Lerong May 29 '13 at 15:04
  • 1
    sure, just drop the ur in \path (bk1-w)+(+6.0,0) node (ur1)[ur] {}; replace by \path (bk1-w)+(+6.0,0) node (ur1)[] {}; this is the node decoration. don't understand what you mean with dashed arrow. – Penbeuz May 29 '13 at 15:12
  • You can also have the text at the end of arrow by \path (bk1-w)+(+6.0,0) node (ur1)[] {Pre process}; an remove the other text. – Penbeuz May 29 '13 at 15:16

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.