Skip to main content

Latex Tutorial: How to Create Images, Diagrams, and Flow Charts Using Latex

This tutorial is an extension of previous video tutorial on how to use tikz for image creation in Latex. In this video I explain how to set up your document for flow chat design. This equally applies to any other image that uses similar structure.

Specifically, in this video I talk about following things:
  1. How to create a flow chart
  2. How to setup styles for reusable components of an image
  3. How to draw arrows from one component to other
  4. How to change the styles of components
  5. How to change the arrowhead for Latex arrows
  6. How to align components left, right, top, and below of each other

The code use:d in the video is here:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,shadows,arrows}
\begin{document}
\tikzstyle{decision} = [diamond, draw, fill=blue!50]
\tikzstyle{line} = [draw, -stealth, thick]
\tikzstyle{elli}=[draw, ellipse, fill=red!50,minimum height=8mm, text width=5em, text centered]
\tikzstyle{block} = [draw, rectangle, fill=blue!50, text width=8em, text centered, minimum height=15mm, node distance=10em]
\begin{tikzpicture}
\node [block] (start) {Start};
\node [block, left of=start, xshift=-5em] (process1) {Process 1};
\node [elli, above of=start, yshift=5em] (user) {user};
\node [block, right of=start, xshift=5em] (process2) {Process 2};
\node[decision, below of=start, yshift=-5em](decision1){Process 1?};
%arrows
\path [line] (user) -- (start);
\path [line] (start) -- (decision1);
\path [line] (decision1) -| node[yshift=0.5em, xshift=10em] {yes} (process1);
\path [line] (decision1) -| node[yshift=0.5em, xshift=-10em] {no} (process2);
\end{tikzpicture}
\end{document}
The image produced by this code is :

The explanation of this code is given in the tutorial as we develop this code:


Comments

  1. Dear Dinwal,

    currently working on master thesis and as a fresher in Latex, I've already profitted a lot from your youtube tutorials. Now, I have a question which has not been answered on your blog. It's about how to generate nice graphs/diagrams from time series data driectly. In my case for example, I want to plot imports and exports of a particular country in one graph (lines, as e.g. could be obtained by using excel graphs/diagrams)from say 1990 until 2011.
    I'd appreciate a lot if you could help me out!

    Many greetings,

    Johanna

    ReplyDelete
  2. Hi!
    Thank you for a great video tutorial, you saved my day! :) I have a small question concerning the text inside the nodes. How do you make a line shift inside the nodes? I have a very simple vertical flow chart, and inside each node there is a short "heading" (e.g. Centrifugation), and I would like to have the specifications underneath (e.g. 10 minutes, 5000 rpm, 50 ml tubes) so it appears something like this:

    CENTRIFUGATION
    - 10 minutes
    - 5000 rpm
    - 50 ml tubes

    I have tried using \itemize and just \\ inside the node, but it does not work and all the text is still in one line like this "Centrifugation 10 minutes 5000 rpm 50 ml tubes."

    I would greatly appreciate your help. Thanks in advance!

    Best regards,

    Kate

    ReplyDelete
    Replies
    1. I think it should work if you put the \newline command between each of those words.

      Delete
  3. Is there a maximum number of nodes one can have in a vertical flowsheet? On my 7th box I get this error:! Undefined control sequence.
    l.284 \node

    All the other boxes above are ok, but everything stops by adding this extra node! Any tips?

    Thanks :)

    ReplyDelete
  4. Thanks for the tutorial. A nice addition would be a quick discussion of how to make a loop, ie, how to place an invisible node in the middle of an arrow.

    ReplyDelete

Post a Comment

Comments on QuickLatex are strictly moderated. As much as I hate moderation, I must fight spam. Please rest assured that if your comment is relevant I will approve it and answer.

Popular posts from this blog

LaTeX Video Tutorial: How to Create a Resume or CV (Curriculum Vitae) using LaTeX

One of the most frequent questions my colleagues ask me is how to create a Resume or Curriculum Vitae (CV), if you will, in LaTeX . I have a style file that was passed to me by a friend who found it on Internet. Since this looked good I used it and, thanks to the original contributor, I am going to share it with you all today. You will be able to download these files and create a professional Resume for yourself.  The files can be download from the linked locations: The Resume.tex file (main document) The Class file res.cls (for page setting) In the video tutorial , attached below, I have explained how to change the text for your needs. The structure of the Resume (or CV) is highly flexible and once you get hold of the basics it will be pretty straight forward for you to tweak it for your own use.  I have tried to add the basic sections that are present in most of the Resumes but you will most probably add more depending on your requirements. I am prett...

LaTeX Tutorial: How to use Lists in Latex - itemize, enumerate, description, and inparaenum

LaTeX is a great tool for typesetting and it is more powerful than MS-Word. It has a steep learning curve and that is why I believe these video tutorials will help you guys. Today, I am going to talk about lists in LaTeX. LaTeX can produce both bulleted lists or unordered lists, and numbered lists or ordered lists. We will also see how to use lists with descriptions given to each list item. Specifically, we are going to have an introduction of following topics in LaTex: Lists in LaTeX: Itemize, enumerate, inparalist, and description Itemized list in LaTeX for bullets enumerated list in LaTeX for numbered lists inparalist in LaTeX for lists wrapped around text description lists in LaTeX for lists with description for each item Nested lists in LaTeX Using styles for numbering lists (roman, in parenthesis etc.) Use of paralist LaTeX package Here is the video for this tutorial: If you have a question or comment please do not hesitate to leave a comment. I wil...