Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

When putting together results, it's often desirable to have some professional looking diagrams, rather than diagrams put together in MS Paint. What is the standard for drawing data structures?

share|cite|improve this question
I'm not sure if this is considered on-topic (the FAQ gives little guidance). You may find this MO thread of relevance. – Per Vognsen Sep 26 '10 at 5:57
It's definitely a soft question, but right on the border. Maybe CW ? – Suresh Venkat Sep 26 '10 at 6:06
Suresh's answer is really good. Graphviz is also a nice tool, although harder to link into papers. – Ross Snider Sep 26 '10 at 7:06
IMO, completely on-topic, but I personally won't vote up as I think it should be CW. – Kaveh Sep 26 '10 at 10:02
I think it's on topic, but should be CW, since people are going to upvote answers to indicate that they like a particular package, and these votes should not go to the person who happened to post that package. – Robin Kothari Sep 26 '10 at 14:38
up vote 18 down vote accepted

The MO thread Per links to is pretty good, and this thread on tex.SE is also handy. The main tools that I've used:

I know that Mac folks swear by Omnigraffle, but I have zero experience with it myself. The main criteria for me are:

  • Generating PDF
  • Integrating LaTeX (with source styles for bonus points)
  • Being able to do color/shading etc easily. (Ipe 7 fails on that count)
share|cite|improve this answer
You can also export SVGs to TikZ snippets in Inkscape, which is very useful when you want to integrate freeform vector drawings into your TikZ diagrams. – Per Vognsen Sep 26 '10 at 8:50
the export procedure isn't complete though: no gradients etc from what I understand. – Suresh Venkat Sep 28 '10 at 3:05

Suresh recommended "Tikz/PGF" for LaTeX. In addition, for drawing graphs and the like, I recommend the following packages:




For a sample usage, see the gallery of named graphs.

See also other pages on (They are mostly in French, yet you can figure out the meaning using Google Translator.)

share|cite|improve this answer
That gallery is beautiful! – Aaron Sterling Oct 28 '10 at 14:55
I know I'm 3+ years out of date, but the link to the gallery above is broken. – Xynariz May 21 '14 at 17:36
@Xynariz: Thanks for notifying me! I corrected the link. – M.S. Dousti May 23 '14 at 7:28
Works great now, thanks. – Xynariz May 23 '14 at 18:27

Suresh mentions OmniGraffle and Ross mentions Graphviz.

Actually, OmniGraffle is Graphviz with a GUI (and much more). You can draw a graph (or import it from a file), then use a Graphiz-based layout engine to automatically layout the graph. You can tweak the parameters of the layout engine, and finally you can switch off automatic layout and fine-tune the placement of the nodes manually.

That said, I still tend to use Xfig for most illustrations in my papers... The possibility to embed arbitrary Latex code in your illustrations is often essential, and that's exactly where Xfig excels (at least until you need to deal with publishers who expect self-contained EPS files).

share|cite|improve this answer
+1 for xfig ... – RJK Sep 28 '10 at 15:24
You should try TikZ. Sounds like you'd like it. :) – Radu GRIGore Sep 29 '10 at 8:31
@Radu: I have tried it. At some point I had to start compiling my Latex code on a remote machine, as my desktop computer was far too slow, and even then it was a pain. TikZ might be fine if your illustrations are small (in particular, not computer-generated), or if you are willing to compile your figures and your main document separately. – Jukka Suomela Sep 30 '10 at 21:31
Ah, yes, I had that problem once. I put the generated part in a separate file and commented out the \include/\input line while drafting. I agree that it can be annoying if you have such figures often. – Radu GRIGore Oct 1 '10 at 12:06

I want to add Asymptote to those mentioned by others.

The Wikipedia page for Asymptote.

share|cite|improve this answer

Since some have mentioned Graphviz, there is also dot2tex which converts Graphviz code into TikZ. This makes using it within LaTeX (have mathematical expressions in labels etc.) and fine-tuning the appearance of the graph easier. You can even embed the Graphviz code directly in the TeX code (in a dot2tex environment) and have it run Graphviz automatically.

share|cite|improve this answer

For simple drawings I prefer yEd. It can be launched straight from the browser.

share|cite|improve this answer

Apart from TikZ and graphviz I have made good use of my graphics tablet. You can get the new small Wacom Bamboo for 50€ (used) to 100€ (new). With a tablet you can create quite good looking images quickly; for anything but journal/conference/book publications -- depending on your skill, even then -- the results are very presentable.

You can, of course, use any graphics program. I have found Creately and Dabbleboard very useful for graphs and the like.

share|cite|improve this answer

If you require some geometry, you could try C.a.R. or its offspring CaRMetal.

share|cite|improve this answer

You might take a look at GePhi.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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