26

Is there any software that allows to draw block diagrams

1
  • Since it is not mentioned in the answer as far as I can see, the OpenOffice / LibreOffice Draw can be used to make block diagrams too. Apr 13, 2016 at 16:44

9 Answers 9

21

Free online options

For something quick, there are a growing number of (usually SVG-powered) free online flow chart tools. Here's a few that don't require log-in, all pretty basic but user-friendly:

  • Draw.io (free and open source) - straightforward, allows saving straight to Google Drive or Dropbox. Also has a Desktop version.
  • Gliffy (free up to 5 public diagrams, then pay-for) - clean layout, has a 'Confluence' plugin for wikis
  • Other answers on this page recommend LucidChart (freemium) and Cacoo (freemium)

For mac / iOS

Omnigraffle is popular for that sort of thing, if what you want is to make connected-block arrow-heavy flow diagrams quickly.

I don't use it myself, but I know a few information designers who swear by it as a simple way to put together an outline for a diagram, organise their thoughts and get the layout, content and structure right. They then export to Adobe Illustrator to design the presentation of the final product - you could skip this final step if you're just making simple diagrams like that.

enter image description here


For PC

I've heard vague but positive things about Visio, and people sometimes describe Omnigraffle as 'Visio for Mac' so I think they're fairly equivalent.

You can also browse software alternative lists like this one.

enter image description here


4
  • 2
    I've used Visio a few times for UML diagrams, these sort of graphs are definitely doable using it.
    – JohnB
    Mar 13, 2013 at 14:36
  • 1
    Omnigraffle is not 'Visio for the mac'. Omnigraffle is actually fun to use. :)
    – DA01
    Oct 5, 2014 at 16:53
  • 1
    Visio was designed to draw flowcharts, circuit diagrams and block diagrams for technical people who don't often use tools designed for draftsmen or designers. It has some very nice features (like "gluing" lines to objects, so the line moves with the object), but also some really cumbersome workflows if you're used to "real" drawing tools.
    – Voxwoman
    Apr 19, 2015 at 13:59
  • Unfortunately Visio is not PC but Windows. E.g. for me (GNU/Linux) there's no Visio build.
    – Hi-Angel
    May 25, 2018 at 9:11
8

I like Dia which is a free open source diagramming tool available for Windows, Mac OSX and Linux. Its been around for years and is popular with both software and electronic engineers.

Dia screenshot

1
  • 1
    It doesn't look like Dia is very well maintained anymore. LibreOffice Draw as improved leaps and bounds since the last Dia release, so I'd recommend Draw instead for people looking for an open source solution. Aug 19, 2016 at 12:05
7

yEd is good at this, is free and has Windows, Mac and Linux versions:

http://www.yworks.com/en/products_yed_about.html

yED Example

7

I don't know if its suitable here, but there are also ways with not WYSIWYG-programms. In my example the tikz-package of LaTeX. Normally TeX is used for texts and professional scriptum, but also good looking vector graphics are possible, with a little effort. Other great examples can be found in tex.SX or behind this link. :)

enter image description here

Source code:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\begin{document}
\tikzset{  
block/.style    = {draw, thick, rectangle, minimum height = 3em, minimum width = 3em},}
\begin{tikzpicture}[auto, thick, >=triangle 45,fill=blue!20]
\node at (0,0)[circle,draw,inner sep=0pt,minimum width=3mm,name=n1,label={225:$-$},fill=blue!20] {};
\node[block,right of= n1,node distance=2cm,fill=blue!20] (con) {Controller};
\node[block,right of= con,node distance=3cm,fill=blue!20] (sys) {System};
\node[block,below of=con,xshift=1cm,node distance=2cm,fill=blue!20] (mea) {Measurement};
\draw[<-] (n1.west) to node[midway,above] {$r$} (-1,0);
\draw[->] (n1.east) to node[midway,above] {$e$} (con.west);
\draw[->] (con.east) to node[midway,above] {$u$} (sys.west);
\draw[->] (sys.east) to node[midway,above] (y) {$y$} ++(1,0);
\draw[->] (y.south) |- node[midway,above] {} (mea.east);
\draw[->] (mea.west) -| node[near end] {$y_m$} (n1.south);
\draw[<-] (sys.north) to ++(0,1) node[above] {Disturbances};
\end{tikzpicture}
\end{document}
5

A great online solution, one that integrates well with Google Drive is Lucid Chart.

There are paid plans, but it's mostly free. I've created tonnes of diagrams for it and this is a typical implementation.

enter image description here

4

What you mentioned is done by TikZ in LaTeX. Sorry but I tried Lucid Charts and Visio and definitely they are not good as TikZ.

You can overleaf and see the result

The code:

\tikzstyle{block} = [draw, fill=blue!20, rectangle, 
    minimum height=3em, minimum width=6em]
\tikzstyle{sum} = [draw, fill=blue!20, circle, node distance=1cm]
\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]
\tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

% The block diagram code is probably more verbose than necessary
\begin{tikzpicture}[auto, node distance=2cm,>=latex']
    % We start by placing the blocks
    \node [input, name=input] {};
    \node [sum, right of=input] (sum) {};
    \node [block, right of=sum] (controller) {Controller};
    \node [block, right of=controller, pin={[pinstyle]above:Disturbances},
            node distance=3cm] (system) {System};
    % We draw an edge between the controller and system block to 
    % calculate the coordinate u. We need it to place the measurement block. 
    \draw [->] (controller) -- node[name=u] {$u$} (system);
    \node [output, right of=system] (output) {};
    \node [block, below of=u] (measurements) {Measurements};

    % Once the nodes are placed, connecting them is easy. 
    \draw [draw,->] (input) -- node {$r$} (sum);
    \draw [->] (sum) -- node {$e$} (controller);
    \draw [->] (system) -- node [name=y] {$y$}(output);
    \draw [->] (y) |- (measurements);
    \draw [->] (measurements) -| node[pos=0.99] {$-$} 
        node [near end] {$y_m$} (sum);
\end{tikzpicture}

\end{document}
3

My favourite software for this is actually a web-based editor, Cacoo.

It's very good at most linked diagram styles (both your examples are quite easy to make with Cacoo), and is much more user-friendly than Visio (though not as in-depth). It's also cross-platform due to it being web-based, and seems to have an offline mode, though I don't use that personally.

The reason I settled on Cacoo was actually because of its collaboration feature, that allows multiple users to be working on the same diagram at once. Obviously this doesn't work so well in offline mode, but is surprisingly effective when you want to show someone an idea or make quick changes.

I pair Cacoo with MindMeister for mind-mapping, and have all my diagramming needs covered.

2

My favourite is Pencil Project. It allows you to build all sorts of diagrams, lets you install more shapes and types, export to many formats, like png, svg, html etc. and is free! If you want, you can even install it as a firefox extension and use it as you browse the web. You can also search for clipart in the web directly from the software. What's more, you can even include UI widgets into your diagrams.

0
2

Take a look at Nevron Draw. It works on Windows and Mac and offers most of the MS Visio functionality. In particular for this type of diagrams you need software that has shapes with inward / outward ports support, connectors that detect crossings and draw bridges where appropriate and also allow for annotation. Those features are present in Nevron Draw.

Disclaimer: I work for Nevron.

1
  • 2
    Hi Bob, welcome to GD.SE and thanks for your answer. Your honest disclaimer is very much appreciated--this is actually the way we like to see it :). If you have any questions about the site, have a look at the help center or feel free to join us n Graphic Design Chat once your reputation allows you to (20). Keep contributing and enjoy the site!
    – Vincent
    Aug 3, 2016 at 8:43

Not the answer you're looking for? Browse other questions tagged or ask your own question.