I would like to have suggestions of good software for drawing illustrations in research papers. I already know about Xfig, but this works only on Linux and is at times, clunky when it comes to text. Moreover the resolution is not always perfect making it difficult to manoeuvre the objects. Besides it is tough to learn and master, with all its weird click procedures.

I would love to know about better alternatives. Not talking about graphs here, just block diagrams and explanatory illustrations.


17 Answers 17


As drawing software, I use OmniGraffle which is much more modern that Xfig, but based on similar principles. It's only available for the Mac and is not free, as far as I know. With little effort, one can produce very attractive diagrams.

I also use Tikz/PGF. It produces very nice diagrams and is very flexible. On the other hand, it requires that you specify the diagram in LaTeX and it has a bit of a steep learning curve.

  • 30
    Tikz/PGF is really great, and I would advise to start directly by tweaking some existing examples, rather than learning it from scratch.
    – user102
    Commented Apr 12, 2012 at 7:36
  • 2
    I've given some arguments for the use of Tikz at the stats site as well, see here. Mainly Tikz is pretty simple for directed graphs, and that it is much easier to maintain a template between multiple diagrams in Tikz than it is with a WYSIWYG editor.
    – Andy W
    Commented Apr 12, 2012 at 11:59

A free, fairly portable, and very complete tool for general illustration is Inkscape. It uses SVG as its native file format, and aside from attempting to be a decent drawing tool in its own right, one of its design goals was to provide complete coverage of the features available in SVG.

For block diagrams, flow charts, and other simple sketches of process and data flow there is Dia. It's primary design goal is to duplicate the features of Visio in free software. Like Visio, it uses a stencils and connections drawing model that works really well for diagramming relationships and flow, but gets tedious when attempting to do art.

For clean layout of directed or undirected graph diagrams, it is difficult to beat the Graphviz tools. They are primarily designed to be used from a textual description (a concise intro here (PDF)) of the graph, but there are various GUI tools that can edit their .dot files.


I know that TikZ was mentioned already, but I think it deserve its own answer. It is different from Omnigraffle just like TeX is different from Word. But, if you're up for the effort, you'll enjoy the freedom of producing extremely high quality figures!

True, using TikZ for "heavy" 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 approach using make.

Although TikZ is not at all WYSIWYG, there are several editors, that enable the use to draw "by hand" the diagram and export it to a Tikz snippet. Personally, I don't have experience 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 external data sources and visualize them. To that end, you can use a combination of TeX, lua or other languages of your choice.

Finally, and most important; TikZ provides an amazing live community which can help you with everything related to it. A perfect starting 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 saw amazing outputs of pstricks.


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 changed dynamically afterwards. Elements can be entered and modified directly on screen, or through the Input Bar. GeoGebra has the ability to use variables for numbers, vectors and points, find derivatives and integrals of functions and has a full complement of commands 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 ability to generate TikZ code for any drawing made using the software! Also, the community recently completed 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!


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 really clear, it is easy to procedurally construct graphics, and it has lines, arrows, bezier curves, 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 multiple images, it is easy to share common components, so that a singe change affects all images (provided you use a good programming technique). It is also easy to get help with mathematica over at mathematica.stackexchange.

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

enter image description here


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


The vector graphics language Asymptote is a very nice tool for both 2D and 3D images. From its website:

Asymptote is a powerful descriptive vector graphics language that provides a natural coordinate-based framework for technical drawing. Labels and equations are typeset with LaTeX, for high-quality PostScript output.

Checkout a gallery for samples. Just like TeX, you can "program" your image and obtain exactly what you want.


If you really care about typography, it is best to produce the figures and the text with the same layout engine. This is the only way in which you can be sure that fonts, stroke size and spacing match those of your text.

TikZ, already suggested in Dave Clarke's answer, solves this problem excellently for TeX. Although, like TeX, it can be difficult for a newcomer. Adobe InDesign is a WYSIWYG solution. MS Publisher is another one, although less powerful. Word has limited capabilities in this respect.

Most often, this requires access to the final article style of the journal, and is work for a typographer rather than a scientist. So it would be better left to the journal staff. However, it is an unfortunate truth that most journals try to reduce costs at the expense of quality when it comes to typography. Some of them offer "professional figure editing" as an extra paid service for authors. Some of them just take what is provided and do not care about fonts and stroke sizes.


TikZ/PGF is great when you get it to work. However, designing your stuff in this language can really be frustrating at times. If you want something a little bit easier 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 experience (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:

enter image description here enter image description here

Also, check out this video for an example of an animation with Processing, and this video 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 tool. It serves both Mac and MS Windows users.


All ways that allow you to produce the graphic you want is what you should use. I have used many different software over the years. I have gradually abandoned ones when I found better alternatives.

I usually make "raw" data plots using Matlab and then use Adobe Illustrator to put the finishing touches to them (Inkscape or Corel draw would work equally well). The benefit of doing things this way is, for me, that I can add material from different sources or plots in layers and change 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 new ways.

I also use LaTeX 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.


I really like using yEd for flow charts. You can easily arrange lot's of components, which is quite a pain if the tool does not provide functionality to do that (Inkscape does for example, but yEd does this even better). Also, the connections between components remain fixed, so rearranging a graph does not require you to redraw the connections. The tool is available for Linux, Mac and Windows.


To add to the mix, there are online diagramming tools available as well, namely Gliffy and LucidChart. Both have free subscriptions that allow limited use which is usually sufficient for simple diagrams. With these tools, you draw the diagram in your browser and can download it as PNG, PDF or JPEG. LucidChart allows a free upgrade if you register using a *.edu.* email address.

Another good offline tool is Microsoft Visio which works on Windows only. It is great for drawing flow charts and other simple diagrams. There are many Visio clones but none of them live up to the original. In fact, I stumbled upon the above online tools looking for Visio alternatives for Linux.


I used to use pstricks extensively, and now use TikZ/PGF. Both are excellent LaTeX packages and neither has any major advantage over the other, as far as I can tell. pstricks seems to be better at colour gradients, though possibly less accurate at colours for (.ps to) PDF output, whereas TikZ can be easier to use. Both are programming languages that allow you to use fairly sophisticated code to generate graphics, and TikZ in particular allows very helpful implicit calculations, such as "find the intersections between this curve and that curve".

Combined with other programs, these two packages can be really powerful. For more advanced pictures involving organic shapes and curves, I first draw a rough picture by hand, tidy it up with Inkscape, which is excellent vector-based graphics freeware. I then either export it to TikZ code and tidy that code up, or include the Inkscape picture as background image and manually trace over the outlined curves with TikZ. Either method involves some effort but the results are beautiful.

A second combination of methods is used when I want to show the output of computational research. After the computational work is completed, for instance by Python or C code, some further code can quickly create and compile LaTeX+TikZ code showing the output. This is particularly useful when updating a database or an Excel spreadsheet, and just running a Python script to update the associated TikZ-generated graphs and tables. It is even more useful for automatically generating high numbers of pictures, such as a large collection of heat maps to illustrate different data.


Maybe I missed it but for any workflow diagram (and not only, I do all kind of diagrams with it), I'd also mention draw.io (which is open source and can be installed from Flathub), and its online version app.diagrams.net.


A rather new option for creating illustrations for geometric objects is Penrose. It is able to generate nice figures for different objects described in a mathematical notation. See the paper for examples and more explanation.


There are a lot of different options, as people have mentioned. For flowchart / block diagrams, I often use diagrams.net or sometimes Visio.

For further vector-image touchup I often turn to Affinity Designer, which has a commercial level of polish but is much less expensive than Adobe Illustrator.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .