Quantcast
  • Register
PhysicsOverflow is a next-generation academic platform for physicists and astronomers, including a community peer review system and a postgraduate-level discussion forum analogous to MathOverflow.

Welcome to PhysicsOverflow! PhysicsOverflow is an open platform for community peer review and graduate-level Physics discussion.

Please help promote PhysicsOverflow ads elsewhere if you like it.

News

New printer friendly PO pages!

Migration to Bielefeld University was successful!

Please vote for this year's PhysicsOverflow ads!

Please do help out in categorising submissions. Submit a paper to PhysicsOverflow!

... see more

Tools for paper authors

Submit paper
Claim Paper Authorship

Tools for SE users

Search User
Reclaim SE Account
Request Account Merger
Nativise imported posts
Claim post (deleted users)
Import SE post

Users whose questions have been imported from Physics Stack Exchange, Theoretical Physics Stack Exchange, or any other Stack Exchange site are kindly requested to reclaim their account and not to register as a new user.

Public \(\beta\) tools

Report a bug with a feature
Request a new functionality
404 page design
Send feedback

Attributions

(propose a free ad)

Site Statistics

157 submissions , 130 unreviewed
4,092 questions , 1,495 unanswered
4,954 answers , 21,129 comments
1,470 users with positive rep
560 active unimported users
More ...

  What software programs are used to draw physics diagrams, and what are their relative merits?

+ 21 like - 0 dislike
9657 views

Undoubtedly, people use a variety of programs to draw diagrams for physics, but I am not familiar with many of them. I usually hand-draw things in GIMP which is powerful in some regards, but it is time consuming to do things like draw circles or arrows because I make them from more primitive tools. It is also difficult to be precise.

I know some people use LaTeX, but I am not quite sure how versatile or easy it is. The only other tools I know are Microsoft Paint and the tools built into Microsoft Office.

So, which tools are commonly used by physicists? What are their good and bad points (features, ease of use, portability, etc.)?

I am looking for a tool with high flexibility and minimal learning curve/development time. While I would like to hand-draw and drag-and-drop pre-made shapes, I also want to specify the exact locations of curves and shapes with equations when I need better precision. Moreover, minimal programming functionality would be nice additional feature (i.e. the ability to run through a loop that draws a series of lines with a varying parameter).

Please recommend few pieces of softwares if they are good for different situations.


This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub

asked Nov 9, 2010 in Resources and References by Mark Eichenlaub (100 points) [ revision history ]
recategorized Apr 24, 2014 by dimension10
What kind of diagrams are we talking about here? I think the question may be too broad as it is (it'd be like asking "what software programs are used to create desktop wallpaper?").

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user David Z
The kind I currently draw with a pencil and paper. Blocks with springs on them. Free body diagrams. Pulleys, ropes, buckets, roller coasters, monkeys and bananas, guns that shoot horizontally. Ray diagrams, trajectories, geometric diagrams, spacetime diagrams. I would use Mathematica for things like plotting functions or drawing vector fields.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub
Then that's a question about general drawing tools, not about physics. It'd be a better fit on Super User, I think. (I thought you might be asking about e.g. software to draw Feynman diagrams or stuff like that.)

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user David Z
I specifically want the opinion of people who draw the same sorts of diagrams I do, so I figured physics was a good place to ask.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub
Might be a good community wiki, since there's no well-defined correct answer?

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ptomato
Related question on SO: stackoverflow.com/questions/4005042/…

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user nibot

The program Tikz is a pretty good candidate.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Sanath Devalapurkar

20 Answers

+ 13 like - 0 dislike

I've had good experiences with Inkscape. It has a GUI interface, but allows you to enter coordinates directly if you want, and it's scriptable. There is a plug-in that allows you to enter LaTeX directly (for labels and such). The downside is that it is very much still in development, so sometimes you find that a feature you want is not completely implemented yet.

As an example, here is a poster I made last week, entirely within Inkscape: Poster made with Inkscape

Inkscape now also has the "JessyInk" plug-in which allows you to use it to make presentations (à la Powerpoint). The presentation can be viewed in a web browser as SVG, or exported to PDF.

If you have a Mac and don't mind spending some money ($100), I've heard good things about OmniGraffle.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user nibot
answered Nov 9, 2010 by nibot (35 points) [ no revision ]
I've used Inkscape a lot (though I prefer LaTeX/TikZ) and it's been very rare that I need a feature which isn't implemented.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user David Z
Thanks for the tip. I have just started going through the tutorial for Geogebra (geogebra.org/cms), and will give Inkscape a look next.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub
In general something for vector drawing; I'm using CorelDraw for such things, yet it is not free and Windows only (indeed it is the only reason why I have Windows installed).

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user mbq
+1 for Inkscape, especially when used with the LaTeX render function. It's nice having diagrams in vector (SVG) form, so that they can be easily rescaled, layers changed and so on, as needed.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ihuston
Also, you can export graphs from gnumeric in svg format and import them in inkscape: screencasters.heathenx.org/episode-078

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Steven Devijver
Nice. Didn't know about the LaTeX-plugin until now.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Leonidas
+ 13 like - 0 dislike

I'm learning TikZ (a drawing package for LaTeX) as we speak. It's good for two-dimensional line drawings, the syntax for specifying shapes and curves is extremely versatile, but the learning curve is steeper than LaTeX even.

There is a superb gallery of TikZ examples.

Here is another collection of neat TikZ examples on SE.tex.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ptomato
answered Nov 9, 2010 by ptomato (-10 points) [ no revision ]
Most voted comments show all comments
It's worth noting that TikZ is far better documented than LaTeX as a whole, which IMO more than makes up for the learning curve.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user David Z
Actually, LaTeX is better documented: it's just that you have to buy the documentation. I disagree that TikZ' documentation makes up for the learning curve. It's extremely wordy, and the tutorial part doesn't structure the information so that you learn a basic framework first - you can't start making your own diagrams until you've been through a large portion of it.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ptomato
Is it permitted for use in journal publications?

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Alex 'qubeat'
@Alex: that really depends on the journal. Some journals do not even permit LaTeX.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ptomato
I mean AIP or APS journals. Some macropackages may not be managed there or cause reduction of picture quality.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Alex 'qubeat'
Most recent comments show all comments
@ptomato: On the other hand, Physical Review and related journals prefer submissions in LaTeX (using revtex, of course). The part about using revtex is important, because it allows them to confidently processes manuscripts for web and print automatically. Accepting arbitrary LaTeX is hard, but accepting a large-but-well-defined subset is manageable.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user dmckee
@ptomato It seems that AIP may have changed to allow RevTeX now (see publishing.aip.org/authors/preparing-your-manuscript)

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark S.
+ 10 like - 0 dislike

I'll interpret your term diagram as "any fancy image that captures some physics".

For this I can hardly recommend anything else then MetaPost. It's on par with TeX in being a little hard to learn but once you do master the basics you won't believe you could have ever used anything else (in particular, GIMP and Inkscape; good analogy here would be to TeX vs. MS Word).

Basic properties

  1. it's a (simple) programming language
  2. it's vectorial (this should probably go without saying but still)
  3. it's primitives are things like points, lines, paths, splines
  4. it contains excellent image manipulation facilities; you can say things like "take this image, scale it up by two and rotate it by 60 degrees"
  5. you can insert TeX labels
  6. it can solve equations; This is a real killer that no one else offers. You can draw two curves $X(t)$ and $Y(t)$ (defined most comfortably as splines) and tell MP to compute their intersection, draw a point there and label it with some text

Success story

I used MP to create some polygons on a hexagonal lattice in the context of cluster expansions. There was a huge number of those polygons to draw, so I quickly abandoned all hope of trying to draw them by hand in Inkscape or something similar. True, it would probably be quicker in the end, but I hate manual work; I rather spend much longer learning some programming language and then just code all the work in few minutes. So I put together simple MP program that has converted my input data (vertices and edges of the polygons as just numbers) into beautiful images. For a one night's work and my first time with MP I was more than satisfied.

Goodies

alt text

Credit for this amazing picture goes to Johan Kåhrström (go also see more stuff under illustrations there).

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Marek
answered Dec 23, 2010 by Marek (635 points) [ no revision ]
Excellent summary and example image! Thanks, Marek.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub
@Mark: I only now noticed that this was a community wiki and other answers are just few lines long. So I wonder whether this long answer is suitable here (I don't want to steal too much space just for myself). Still, seeing that you like it, it can probably stay :-)

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Marek
Beautiful example!

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user nibot
I think TikZ can actually do all the things you mentioned in your list.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user David Z
@David: I should have a look at it then; thanks for the heads up. Though now I notice that there is already an answer about it here (not very informative unfortunately) that I had missed.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Marek
Wow, the image is awesome.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Juanlu001
+ 10 like - 0 dislike

First of all do not use a raster graphics software like Gimp to draw pictures. This has serious disadvantages when you want to make screen readable documents (the picture pixelizes). For this purpose always use vector graphics. Wikipedia has a nice list of vector graphics software. Among them, I'd recommend the following:

  • Inkscape (Cross-platform): Although the learning curve is a bit steep, its worth it. Note that Inkscape was not meant for making scientific diagram. Still you'll find a LaTeX plugin, export to LaTeX/PSTricks etc.

  • Dia (Cross-platform): Very simple and easy, but not very powerful. Can't process LaTeX.

  • Ipe (Cross-platform): Ipe is something in between Inkscape and Dia. Also Ipe was designed for scientific drawing. Can process LaTeX source code and import PDF figures.

  • WinFIG (Cross-platform): Although commercial, its quite popular in the scientific community.

EDIT: Wikipedia has a nice page which discusses various software that can be used to create figures. See Wikipedia:How to create graphs for Wikipedia articles

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Bernhard Heijstek
answered Jul 20, 2011 by Bernhard Heijstek (0 points) [ no revision ]
+1 Very informative answer.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ysap
+ 7 like - 0 dislike

I would try matplotlib, but first check here and decide if these pictures satisfies your needs. Also click some picture and inspect source code.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ralu
answered Nov 9, 2010 by ralu (0 points) [ no revision ]
Those are some nice-looking pictures! I suppose I would have to learn Python, though.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub
@Mark : It's never to early to lear python ;)

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Frédéric Grosshans
It is only fair to mention that matplotlib is extremely similar to MATLAB: Similar user interface, similar capabilities, similar default styles, etc. One advantage of Matplotlib over matlab is that you get to use python, which is a better programming language than matlab. Another is that matplotlib is free, while matlab is prohibitively expensive unless you get it through work or school or pirated. On the other hand, MATLAB has better help files, easier installation, and a bigger scientific user base [but I hope those things will eventually change.]

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Steve B
I used matplotlib for many graphics in my thesis. The only downside is the lack of tex output. This meant I had to import my .svg files in Inkscape to add text an then export is as tex.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user BandGap
+ 7 like - 0 dislike

Sometimes raster graphics is also necessary. I often used POV-Ray to make some illustrations. black hole

It may be prepared with any size using the same script with description of the picture, that avoid scaling problem. But it is not a graphical editor and fast only for preparation of simple pictures.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Alex 'qubeat'
answered Jul 20, 2011 by Alex 'qubeat' (0 points) [ no revision ]
+ 7 like - 0 dislike

For drawing Feynman diagrams with SVG, I have developed jQuery.Feyn to make it easier (see the screenshot below). enter image description here

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user soliton
answered Aug 3, 2013 by soliton (110 points) [ no revision ]
+ 6 like - 0 dislike

Related post in SO.

My personal favorite is Asymtpote which is like MetaPost on steroids. A gallery is here.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user ja72
answered Dec 23, 2010 by ja72 (0 points) [ no revision ]
I read about Asymptote when I was deciding whether to learn MP or something else. Something put me off; whether it was C++-like syntax, only LaTeX support, or perhaps something else (I don't remember whether anything of this has to do with Asymptote or some other program anymore). Could you describe the differences with MP a little? I'd be all for learning Asymptote if it proves to be a better alternative.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Marek
@Marek Wow this is an old thread, but it seems your question was never answered. I personally favor Asymptote, since it gives pretty much all the power of MP but with a much more streamlined syntax. I like it and I don't even like OO programming. Whatever geometric things you commonly draw probably already exist as very natural functions. Plus, it draws on LaTeX to make the labels typeset well. And if you so desire you can integrate Asy commands seamlessly into a Tex document by using the right package, though I prefer to keep them separate. Asy is definitely underappreciated.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Chris White
+ 6 like - 0 dislike

I've recently been introduced to GeoGebra, and while I haven't yet had the opportunity to use for any work, I love the interface. For geometrical diagrams it looks spectacular.

I've also used XFig and gnuplot extensively. Particularly if you use $\LaTeX$, these tools serve their purpose very very well.

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Colin K
answered Jan 17, 2011 by Colin K (10 points) [ no revision ]
I've been using Geogebra since you pointed this out. It's great!

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Mark Eichenlaub
Moreover, GG can also generate Tikz/asymptote codes, which is awesome :)

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user Waffle's Crazy Peanut
+ 6 like - 0 dislike

Just for completeness, I'll leave this here:

It's always possible to compose your illustrations in raw postscript! Postscript is itself a Forth-like programming language. It's particularly useful for illustrations that lend themselves to being generated procedurally. If postscript itself is too low-level, one can often write a script in some other language that outputs a postscript program.

One superb introduction to producing drawings in raw postscript is this free book:

Cover illustration: Mathematical Illustrations by Bill Casselman

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user nibot
answered Apr 4, 2012 by nibot (35 points) [ no revision ]
Nice book it seems. I have to check it out!

This post imported from StackExchange Physics at 2014-04-03 11:47 (UCT), posted by SE-user 71GA

Your answer

Please use answers only to (at least partly) answer questions. To comment, discuss, or ask for clarification, leave a comment instead.
To mask links under text, please type your text, highlight it, and click the "link" button. You can then enter your link URL.
Please consult the FAQ for as to how to format your post.
This is the answer box; if you want to write a comment instead, please use the 'add comment' button.
Live preview (may slow down editor)   Preview
Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:
If you are a human please identify the position of the character covered by the symbol $\varnothing$ in the following word:
p$\hbar$ysicsOverfl$\varnothing$w
Then drag the red bullet below over the corresponding character of our banner. When you drop it there, the bullet changes to green (on slow internet connections after a few seconds).
To avoid this verification in future, please log in or register.




user contributions licensed under cc by-sa 3.0 with attribution required

Your rights
...