views:

2543

answers:

17

Are there any open-source charting libraries (at this point, I don't care what language/platform it's available for) that can produce "really, really, ridiculously good looking" plots, preferably with features for "scientific" plotting such as error bars? Keynote and Office 2007 really opened my eyes to the aesthetics, and I'm accustomed to the scientific plotting featureset of matplotlib, gnuplot, Matlab, etc. The closest libraries I've found, aesthetically, are CairoPlot and PyCha, but these have substantially more limited sets of chart types and features. In the proprietary world I've found XtraCharts.

(See a related question.)

A: 

OriginLab looks terrific. My nephew used to work for them.

Oops, strike the comment. Not open source.

duffymo
I'll tell my nephew...
duffymo
+1  A: 

Do you mean native or web-based?

Google: http://code.google.com/apis/ajax/playground/#area_chart

.NET controls from M$. Not open source, but free. http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&displaylang=en

IainMH
A: 

You can use gnuplot in your own code. I use a library named JavaPlot along with Scala to create charts for my diploma thesis. But of course its not as feature rich as some other libraries. Has nice anti-aliasing though :)

Lemmy
+16  A: 

Check out this post from my bookmark: 10 Best Free Chart APIs

  • Google Chart
  • Flot
  • Open Flash Chart
  • AmCharts
  • PlotKit
  • Flotr
  • PHP/SWF
  • Visifire
  • FushionCharts
  • JFreeChart
m3rLinEz
A: 

I used Grace in grad school.

Scottie T
+5  A: 

I think stackoverflow uses flot for things like the rep graph. Looks pretty easy to use if your application is browser based.

Brabster
+1  A: 

ZedGraph is easy to use in .NET and looks pretty darned good imo.

SnOrfus
+1  A: 

Matplotlib is a plotting library for python I used a while ago found it pretty useful.

Mr. Brownstone
It also generates beautiful (publication-quality) plots by default--better than any i've seen, which apparently is due to Matplotlib's renderer (AGG or 'anti-grain geometry') which enables sub-pixel accuracy.
doug
A: 

The chars in Open Office 3 can be configured to look exceptionally good, altough the default settings when you make a chart is not that impressive.

All the API's are open so you can dynamicly create all sorts of documents programmaticly.

Tasty error bars:

http://wiki.services.openoffice.org/wiki/Chart2/Features3.0

More examples:

http://wiki.services.openoffice.org/wiki/Chart2/ChartTypes

tovare
A: 

Chaco

Brandon DuRette
+1  A: 

I just spent the last two days looking at a lot of graphing kits. I looked at several dozen, including JavaScript-based ones, server-based ones (generate images), and Flash Ones. I think Flash-based ones are the best in terms of visuals / feature richness.

The best ones (i.e. in terms of features and cost - (both have free versions and enhanced versions which are very cheap) are amcharts and Fusion Charts. Both are gorgeous Flash-based graph libraries, and have ability to manipulate them through JavaScript and interact with any runtime. I am having a horrible time deciding between the two. Open Flash Charts are good, too, though behind the ones I named.

For JavaScript ones Emprise JavaScript Charts is great.

Jean Barmash
+1  A: 

R (free and multiplatform) has a pretty robust set of graphical tools that can be made to plot just about anything.

http://www.r-project.org/

The R Gallery has examples of what the R savants have been able to coax out of this program:

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

Mike Richardson
Check out the ggplot2 package.
Christopher DuBois
A: 

Matplotlib is really missing the error bars. With its support for easy customizing, you can however use polygons and whatever to program them by yourself. Here is an example for a confidence interval:

def makeConfidenceIntervalPolygon(data, confData, runs, color='b'):
    # make the shaded region
    upperConf = data+confData
    lowerConf = (data-confData).clip(min=0, max=max(upperConf))

    upperPoints = zip(runs, upperConf)
    upperPoints.reverse()
    verts = [(runs[0], upperConf[0])] + zip(runs, lowerConf) + upperPoints
    poly = Polygon(verts, alpha=0.2, label='95% conf. zone', facecolor=color)
    return poly

You then simply add the returned poly to your plot:

    ax = fig.add_subplot(111)
    ax.add_patch(poly)
wr
A: 

ROOT, the current tool of choice in nuclear and particle physics.

dmckee
+1  A: 

This paper, from Klaus Mueller, Stony Brook University NY, is a highly up to date, detailed and broad exposae on nearly the entire gambit of scientific vidualization methods, examples and application scenerio's (references to implmentations).

Also, check out TAU, it's very robust, accurate and flexiable.

RandomNickName42
+2  A: 

I would say the best looking charts can be built using Mlab. Have a look and browse the gallery. Those charts are really good. If you need to draw amazing network graphs then have a look at Circos

DrDee
circos is a very interresting approach.
tovare
+2  A: 

A vector graphics language called Asymptote can produce some very nice graphs (among other things). Some example graphs (both 2d and 3d) can be found in their graph gallery. The graphs have sane default settings (white background, black line colour). Additionally, all text in the graphs is rendered by using LaTeX so it offers nice fonts and excellent support for typesetting mathematical formulae.

Unfortunately, as far as I know, there are no graphical plotting or data analysis environments for Asymptote. In order to use the system one must write a script in a special C-like Asymptote language. This language is then interpreted by the "asy" program which generates a PDF or an EPS (Encapsulated PostScript) file.

kaitanie