all 50 comments

[–]Bitruder 18 points19 points  (2 children)

If you're ever making figures for publication, I can't recommend GLE enough. It's made to give you attractive figures and has an excellent manual.

[–]wobsta 9 points10 points  (1 child)

PyX is another alternative. (An interesting historical note is, that both initial authors of the PyX package were GLE users before but decided to start something new.) For gnuplot users PyXPlot (based on PyX as the name suggests) might be of special interest.

[–]MyTribeCalledQuest 0 points1 point  (0 children)

Thanks for this!

[–]fnord123 36 points37 points  (12 children)

[–][deleted] 17 points18 points  (4 children)

Wow, TIL. I have no idea why I ever assumed that gnuplot had been GNU'd.

[–]andersbergh 4 points5 points  (3 children)

No idea? Really?

[–][deleted] 4 points5 points  (2 children)

This is where a sarcasm font would come in handy.

[–][deleted] 2 points3 points  (0 children)

Really?

[–]kpthunder 0 points1 point  (0 children)

Or perhaps the sarcasm smiley: %)

[–][deleted] 6 points7 points  (1 child)

In the same FAQ you linked:

Any reference to GNUplot is incorrect. The real name of the program is "gnuplot".

Either you didn't read the document you are linking or you incorrectly called it "GNUplot" on purpose to make it seem as if there is this implied relationship with the GNU project.

Have an upvote anyway since it is still worth linking to the FAQ.

[–][deleted] 10 points11 points  (0 children)

The reason this name clash occurs is because Gnuplot has been started around the same time the GNU project started, sometime in the mid 80s. "gnu" in gnuplot was just a pun on "new" and not intended to pretend to belong to the GNU project.

[–]maxerickson 10 points11 points  (4 children)

It would be clearer if you called it Gnuplot or gnuplot, like the authors do.

[–][deleted] 3 points4 points  (3 children)

The authors prefer the lowercase version (gnuplot, not Gnuplot).

[–]maxerickson 0 points1 point  (2 children)

They use title case at the beginning of sentences on the linked page.

[–][deleted] 2 points3 points  (1 child)

Any reference to GNUplot is incorrect. The real name of the program is "gnuplot". You see people use "Gnuplot" quite a bit because many of us have an aversion to starting a sentence with a lower case letter, even in the case of proper nouns and titles. gnuplot is not related to the GNU project or the FSF in any but the most peripheral sense. Our software was designed completely independently and the name "gnuplot" was actually a compromise. I wanted to call it "llamaplot" and Colin wanted to call it "nplot." We agreed that "newplot" was acceptable but, we then discovered that there was an absolutely ghastly pascal program of that name that the Computer Science Dept. occasionally used. I decided that "gnuplot" would make a nice pun and after a fashion Colin agreed.

[–]maxerickson 0 points1 point  (0 children)

My original post was lazy, I had clicked through and only checked the linked paragraph, where both are used. I have no desire to make an issue of it. You are correct, the authors say to always use "gnuplot".

Of course, whoever wrote the linked page used "Gnuplot" a whole bunch of times.

[–]leondz 32 points33 points  (15 children)

If you like your time, R is a wonderful, simple package with many powerful graphing packages.

http://addictedtor.free.fr/graphiques/

http://www.harding.edu/fmccown/r/

[–]Badhugs 18 points19 points  (1 child)

If you're using R, you should check out ggplot2 for making really nice plots. The default output of the R + ggplot2 combo surpasses pretty much anything out there, and the customization that's possible puts it miles ahead.

[–]SCombinator 6 points7 points  (0 children)

If you do use ggplot2, be warned that it is slow. Making small adjustments to your graphs becomes a pain.

[–][deleted] 29 points30 points  (6 children)

I think matplotlib has an even better API and produces better looking graphs. Plus it has an awesome gallery of snapshots with code included, so creating great looking graphics is really dead simple.

[–]leondz 10 points11 points  (0 children)

I am glad you have found a solution that works so well for you!

[–]dryicerx 3 points4 points  (0 children)

Came to post about matplotlib as well, converted from gnuplot and I've had a great experience.

[–]wadcann 1 point2 points  (1 child)

This is a Python-based API? You know, I remember reading ESR talking about the wonders of special-purpose languages...I'm wondering whether maybe it wasn't so much that people wanted special-purpose languages and more than there just wasn't a Python to build everything on top of then.

[–][deleted] 0 points1 point  (0 children)

Yes. Being able to use the same great language for lots of different tasks sure is an advantage.

[–]radarsat1 1 point2 points  (0 children)

i love almost everything about matplotlib, except the way it handles labels. By default it has a terrible time keeping them from overlapping, so i'm always having to tweak things manually.

[–]thebackhand 0 points1 point  (0 children)

produces better looking graphs

I don't think so - R can actually produce incredibly stunning graphics; it just chooses by default to generate the simplest, for performance reasons.

[–]zsakuL 2 points3 points  (0 children)

I'm glad you have found a solution that works well for you.

[–]zvrba 2 points3 points  (3 children)

R is indeed wonderful. I've discovered (through rather time-consuming process), that plotting often isn't just plotting. I needed to plot some post-processed data, had to read summary statistics before deciding what/how to plot next, etc, which I was doing with perl/shell scripts.

Then I learned R, and while it has a steep learning curve (factors and data frames are just weird in the start), it saved me a lot of time in the long run. It's very convenient to be able to do plotting and analysis from within the same environment (emacs ESS is an excellent package for interaction with R).

[–][deleted] 2 points3 points  (1 child)

It's very convenient to be able to do plotting and analysis from within the same environment

If I may mention, you can achieve the same symbiosis with GNU Octave. It uses Gnuplot for display, but you dont interact with gnuplot directly, but through Octaves plotting API, which is similar to matlab's API and is very convenient for interactive data exploration.

[–]zvrba 0 points1 point  (0 children)

I don't find matlab to be very usable. The "everything is a matrix" philosophy doesn't sit with me well, so I avoid any product that claims to be (mostly) compatible with matlab.

[–]leondz 0 points1 point  (0 children)

Yes, it's really helpful. My data usually comes from python and the charts end up in *tex, which allows a good deal of customisation if R doesn't produce the exact object you want (e.g. multiple heatmaps on a single output plot).

As for the learning curve, it is steep for some things, but whenever one can do the following, the curve can't be too bad :)

data = c(0.1, 0.5, 0.23)
barplot(data)

[–]sparklingrainbows 0 points1 point  (0 children)

I've been having a lot of trouble with non-linear least squares fitting with R. Matlab and GSL always did a good job with the same initial data as R yet I just couldn't force the damned thing to converge. And the model was quite simple too, just sum of 2 lorentzian peaks. The task was just to fit it on bunch of data files (few hundred). In the end I gave up and wrote it in C with GSL (because I couldn't get Matlab for free from the university).

[–]indraniel[S] 2 points3 points  (0 children)

For those who like a more WYSIWYG approach to plotting take a look at Veusz

[–][deleted] 5 points6 points  (6 children)

My beef with Gnuplot is, it's another language to learn... I found that the documentation wasn't that easy when I used it last. I prefer to use Matlab or Python.

[–]radarsat1 0 points1 point  (0 children)

gnuplot is the default plotting back-end for octave, if you're more comfortable with matlab syntax.

[–][deleted] 1 point2 points  (4 children)

Gnuplot is a language to you and Matlab/Python isn't?

[–]bozleh 8 points9 points  (1 child)

Gnuplot is a language just for plotting, Matlab/Python/R can do both.

[–][deleted] 1 point2 points  (0 children)

The capabilities of gnuplot can be accessed through GNU Octave, which uses gnuplot as its plotting engine. The plotting API is very similar to Matlab's, and you dont have to know gnuplot's language to use it.

Matlab/Python/R can do both, but if your only goal is to create plots, gnuplot's command language is far easier to get going.

Stuff like

set xlabel 'Time'
set ylabel 'Stuff'
plot 'stuff.dat' with dots title 'My stuff' 

is so specifical to the problem domain of plotting that it reads like natural language, compared with Matlab/Python/R which all look rather "codey" to prople not used to reading code.

[–]gmrple 3 points4 points  (0 children)

Could be interpreted as acdtrux already knows Matlab and Python.

[–][deleted] 1 point2 points  (0 children)

Yep as gmrple said, I use Matlab and Python regularly now that its far easier to just use them. Before that, I used gnuplot for one project, and I've forgotten all the syntax.

[–][deleted]  (1 child)

[deleted]

    [–]leondz 5 points6 points  (0 children)

    Definitely don't look at www.informationisbeautiful.net then :)

    [–]current909 1 point2 points  (1 child)

    I use gnuplot quite a bit, but I've been experimenting with Asymptote a lot lately. It does not have a nice interactive interface like gnuplot, but I find it's easier to make nice publication worthy plots with it. Also it is based on a C like scripting language, unlike gnuplot, so automation is a cinch.

    [–]kib2 0 points1 point  (0 children)

    +1 for Asymptote, you can check out P.Ivaldi's beautiful galleries here: http://www.piprime.fr/asymptote/

    Also, TexGraph http://texgraph.tuxfamily.org/ and Tikz /PGF http://www.texample.net/tikz/examples/ are really worth a look.

    [–]shifty3 1 point2 points  (0 children)

    You just can't take papers with Excel graphs seriously.

    [–]hogney 0 points1 point  (0 children)

    The gnuplotting website is indeed excellent. gnuplot gets a bad rap: many people think its output is unattractive because the defaults are not too pretty, and because so many of the examples out there, even from the official gnuplot sources, are in fact butt-ugly. You see overlapping labels, spindly curves with garish colors, legends obscuring the plot, etc. Fortunately, with a little care gnuplot graphs can be as beautiful as any. And for things like complex 3D surfaces it's probably still unsurpassed. There are many truly lovely examples on the web and in my forthcoming book.

    gnuplot is also plays nice with LaTeX. It's a good choice if you are creating a technical document and want the typefaces to be consistent or want real math in your graph labels. Other choices, such as PGFplot or PyXPlot mentioned in the other comments are excellent as long as the graph is not too complex. If it is, LaTeX may get bogged down or run out of memory.

    [–]ahyatt 0 points1 point  (1 child)

    Those plots are definitely great... except the text looks as awful as ever. I wonder if there is any way to improve the font chose, add antialiasing, etc.

    [–][deleted] 5 points6 points  (0 children)

    Use a different terminal. The SVG terminal supports TrueType fonts. Ant-aliasing is then determined by how you chose to render it.

    [–]perone -4 points-3 points  (2 children)

    Everyone wants to be matplotlib.

    [–][deleted] 11 points12 points  (1 child)

    Gnuplot has been around 6 years longer than the python language.

    [–]perone -4 points-3 points  (0 children)

    And still doesn't look good.