True, using TikZ for “powerful” diagrams can lead to lengthy compilations, but this can be solved using the externalize library of TikZ. or the Standalone class. See also this possible treatment using make .

Albeit TikZ is not at all WYSIWYG, there are several editors, that enable the use to draw “by arm” the diagram and export it to a Tikz snippet. Personally, I don’t have practice with this kind of combination.

Another advantage of TikZ. that as it is somewhat a programing language (after all TeX is turing-complete) you can program your diagram and use outer data sources and visualize them. To that end, you can use a combination of TeX. lua or other languages of your choice.

Ultimately, and most significant; TikZ provides an amazing live community which can help you with everything related to it. A flawless beginning point would be the TeX.se .

PS: You can also have a look at pstricks. It implements a similar spirit like TikZ but. Well, I’m not using it so I cannot say much. I can say, that I witnessed amazing outputs of pstricks .

Mathematica is actually good for making all sorts of graphics. Think of it as vector graphics software, but that every control point/coordinate can be specified to the decimal.

Edit: The syntax is indeed clear, it is effortless to procedurally construct graphics, and it has lines, arrows, bezier forms, and of course a bunch of nice builtin plot functions that one can add extra decorations to. Furthermore, it IS a programming language, so if you have numerous photos, it is effortless to share common components, so that a singe switch affects all pics (provided you use a good programming technology). It is also effortless to get help with mathematica over at mathematica.stackexchange.

The included picture was entirely produced via a few lines of mathematica code, for example:

GeoGebra is free and multi-platform dynamic mathematics software for all levels of education that joins geometry, algebra, tables, graphing, statistics and calculus in one easy-to-use package. Constructions can be made with points, vectors, segments, lines, polygons, conic sections, inequalities, implicit polynomials and functions. All of them can be switched dynamically afterwards. Elements can be entered and modified directly on screen, or through the Input Bar. GeoGebra has the capability to use variables for numbers, vectors and points, find derivatives and integrals of functions and has a utter complement of directives like Root or Extremum. Teachers and students can use GeoGebra to make conjectures and prove geometric theorems.

To add something that I personally liked a lot, it has the capability to generate TikZ code for any drawing made using the software! Also, the community recently ended a kick-starter campaign, in which they raised enough funds for an IPad version of the software, to be also available for free!

[EDIT] – The tablet app is available now, both in App Store and Google Play!

I use ipe almost exclusively. It’s not well polished, and some things are non-intuitive, but it does those things I need well (plain sketches of math. structures with Spandex formatted text). Also, Spandex wiki book has some useful suggestions for alternatives.

Can you expand on what you like about this software. Big list questions like these are not good fits for SE sites, because they tend to get numerous answers that do not provide much value apart from a link offsite. – StrongBad ♦ Mar 26 ’13 at 15:58

Indeed, this reaction would benefit *enormously* from a brief description of *what Ipe is and what it can do*. Even the linked project page does a rather poor job of explaining that — after browsing the documentation and the wiki, I'm now *fairly* sure that it's some kind of a vector graphics editor, similar to Inkscape or maybe GeoGebra, but even that was not evident at a glance; I very first assumed it was just a diagram markup language like TikZ. Oh well, it still seems interesting enough that I guess I'll just have to download and attempt it. – Ilmari Karonen Mar 26 ’13 at 20:11

TikZ/PGF is superb when you get it to work. However, designing your stuff in this language can truly be frustrating at times. If you want something a little bit lighter to learn, but you still want to program your illustrations rather than drawing them yourself, check out Processing. There are a lot of excellent tutorials on this language, some of them specifically aimed towards people with no prior programming practice (for example this one ).

If you want to check out what some examples of what Processing is capable of (and how you can do it yourself), take a look at this page. As an added bonus, if you learn processing, you can later use it for creating animations, interactive applications, games, and similar things, some of which might be useful in a scientific context.

Some random examples of what Processing can do:

Also, check out this movie for an example of an animation with Processing, and this movie for a tutorial on how to use Processing for data visualization.

In general, if you intend to draw either mind maps or flow diagrams. you may use the conceptdraw contraption. It serves both Mac and MS Windows users.

Can you expand on what you like about this software. Big list questions like these are not superb fits for SE sites, because they tend to get numerous answers that do not provide much value apart from a link offsite. – StrongBad ♦ Mar 26 ’13 at 15:57

All ways that permit you to produce the graphic you want is what you should use. I have used many different software over the years. I have step by step abandoned ones when I found better alternatives. I usually make “raw” data plots using Matlab and then use Adobe Illustrator to put the completing touches to them (Inkscpe or Corel draw would work identically well). The benefit of doing things this is, for me, that I can add material from different sources or plots in layers and switch them as I see fit. I am sure this can be accomplished in other ways but I have found my way to the final product. I also happen to like messing with graphics so that helps me to explore fresh ways. I also use Spandex and TikZ (which has been mentioned in replies) and so as I see it there is obviously no single way to generate the graphics but you need to chose the best ones. In my case: Illustrator (alt. Inkscape, Corela Draw), matlab, TikZ, and Photoshop (alt. Gimp) for photographic manipulation.