5

I am new to Tikz. Please help me. I am confused in using the below of, above of styles.

I have tried. The MWE is as follows. I want the figure to be similar as shown in the image below.

\documentclass[conference]{IEEEtran}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes,arrows} 

\begin{document}
\begin{figure}[h]
\centering
% Define block styles
\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em, text centered, minimum height=4em]
\tikzstyle{line} = [draw, -latex']

\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [block] (soa) {ST};
\node [block] (slt) {slyt};
\node [block] (sclt) {sclt};
\node [block] (gt) {governance testing};
\node [block] (ilt) {ilt};
\node [block] (olt) {olt};
\node [block] (slt1) {slt1};
% Draw edges
\draw [->] (soa) -- (slt);
\draw [->] (soa) -- (slt1);
\draw[->] (soa) -| (gt);
\end{tikzpicture}
\caption{Testing Domains.}
\label{f1}
\end{figure}  
\end{document}

enter image description here

4

EDIT:

With the positioning library you can adjust the distance between nodes (or specific nodes coordinates, e.g. .south, .north, etc.) as you wish. Here I defined all distances respect to node soa, but of course it could be simplier to define the distance between other nodes.

enter image description here

Here is the code generating the block diagram you want. I replaced the \tikzstylecommands with the better \tikzset (see Should \tikzset or \tikzstyle be used to define TikZ styles?), and rearranged the code a bit.

\documentclass[conference]{IEEEtran}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes,arrows} 

% Define block styles
\tikzset{block/.style={rectangle,draw,fill=blue!20,text width=5em, text centered, minimum height=4em},
        line/.style={draw,-latex'}}

\begin{document}
\begin{figure}
    \centering
    \begin{tikzpicture}[node distance = 2cm, auto]
        % Place nodes
        \node [block] (soa) {ST};
        \node [block,below left=2cm and 3cm of soa] (gt) {Governance Testing};
        \node [block,below left=4cm and 1cm of soa] (slt) {SLT};
        \node [block,below=5cm of soa] (sclt) {SCLT};
        \node [block,below right=5cm and 1cm of soa] (ilt) {Ilt};
        \node [block,below right=4cm and 4cm of soa] (olt) {olt};
        \node [block,below right=2cm and 6cm of soa] (slt1) {slt1};
        % Draw edges
        \draw [->] (soa.south) --++ (0,-1) -| (slt.north);
        \draw[->] (soa.south) --++ (0,-1) -| (gt.north);
        \draw[->] (soa.south) --++ (0,-1) -| (ilt.north);
        \draw[->] (soa.south) --++ (0,-1) -| (sclt.north);
        \draw[->] (soa.south) --++ (0,-1) -| (olt.north);
        \draw [->] (soa.south) --++ (0,-1) -| (slt1.north);
    \end{tikzpicture}
    \caption{Testing Domains.}
    \label{f1}
\end{figure}
\end{document}

OLD ANSWER:

Here is a code to help you get started. I am not on my computer so I cannot answer properly by now.

However, you can use the positioning library you already loaded:

\documentclass[conference]{IEEEtran}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{shapes,arrows} 

\begin{document}
\begin{figure}[h]
\centering
% Define block styles
\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em, text centered, minimum height=4em]
\tikzstyle{line} = [draw, -latex']

\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [block] (soa) {ST};
\node [block,below left=4cm and 1cm of soa] (slt) {slyt};
\node [block,below=5cm of soa] (sclt) {sclt};
\node [block,below left=2cm and 3cm of soa] (gt) {governance testing};
\node [block,below right=5cm and 1cm of soa] (ilt) {ilt};
\node [block] (olt) {olt};
\node [block] (slt1) {slt1};
% Draw edges
\draw [->] (soa.south) --++ (0,-1) -| (slt.north);
\draw [->] (soa.south) -- (slt1);
\draw[->] (soa.south) --++ (0,-1) -| (gt);
\draw[->] (soa.south) --++ (0,-1) -| (ilt);
\draw[->] (soa.south) --++ (0,-1) -| (sclt);
\end{tikzpicture}
\caption{Testing Domains.}
\label{f1}
\end{figure}
\end{document}
  • @SibaMishra feel free to ask if there is something unclear; I'll improve my answer as soon as possible – MarcoG Jul 10 '17 at 17:50
  • Thank You. I am trying, will revert you in case of any ambiguity. – Siba Mishra Jul 10 '17 at 17:52
  • 1
    @SibaMishra You're welcome. If you want I have improved my code to get the diagram you wanted. – MarcoG Jul 10 '17 at 20:52
6

An alternative solution, with matrix library:

\documentclass[conference]{IEEEtran}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, matrix, positioning}

\begin{document}
    \begin{figure}[h]
\centering
\begin{tikzpicture}
% nodes
\matrix (m) [matrix of nodes,
             %nodes in empty cells,
             nodes={draw, minimum width=4em, minimum height=1em, inner sep=2mm},
             row sep = 4ex, column sep= 1ex]
{   
    &       & ST    &       &       &       \\
GT  &       &       &       &       & SLTI  \\
    & SLT   &       &       & OLT   &       \\
    &       & SCLT  & IT    &       &       \\
};
% auxiliary coordinate
\coordinate[below=2ex of m-1-3.south] (a);
% edges
\draw   (m-1-3) -- (a)
        (m-2-1 |- a) -- (a -| m-2-6);
\draw[-Straight Barb]   (a -| m-2-1) edge (m-2-1)
                        (a -| m-2-6) edge (m-2-6)
                        (a -| m-3-2) edge (m-3-2)
                        (a -| m-3-5) edge (m-3-5)
                        (a -| m-4-3) edge (m-4-3)
                        (a -| m-4-4)  to  (m-4-4);

\end{tikzpicture}
\caption{Testing Domains.}
\label{f1}
\end{figure}
\end{document}

enter image description here

Addendum: With consideration that image can be fit in column width without any scaling, with bigger distance between the first and the second row and slightly more "fancy":

enter image description here

\documentclass[conference]{IEEEtran}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, calc, matrix, shadows}% changed

\usepackage{lipsum}% added for simulating text in document
\begin{document}
\lipsum[1]% added, don't use in real document
    \begin{figure}[ht]
    \centering
\begin{tikzpicture}
% nodes
\matrix (m) [matrix of nodes,
             nodes={draw, fill=white, drop shadow,% changed
                    minimum width=3.5em, inner ysep=2mm},% changed
             row sep = 1ex, column sep = 1.5ex,% changed (reduced)
            ]
{
    &       & ST    &       &       &       \\[5ex]% added [5ex]
GT  &       &       &       &       & SLTI  \\
    & SLT   &       &       & OLT   &       \\
    &       & SCLT  & IT    &       &       \\
};
% auxiliary coordinate
\path (m-1-3.south) -- coordinate (a) (m-1-3.south |- m-2-1.north);% changed
% edges
\draw   (m-1-3) -- (a)
        (m-2-1 |- a) -- (a -| m-2-6);
\draw[-Straight Barb]   (a -| m-2-1) edge (m-2-1)
                        (a -| m-2-6) edge (m-2-6)
                        (a -| m-3-2) edge (m-3-2)
                        (a -| m-3-5) edge (m-3-5)
                        (a -| m-4-3) edge (m-4-3)
                        (a -| m-4-4)  to  (m-4-4);

\end{tikzpicture}
\caption{Testing Domains.}
\label{f1}
    \end{figure}
\lipsum% added, don't use in real document
\end{document}

Changes in above MWE in comparison to the first one are annotated with comments in code.

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.