views:

285

answers:

8

I'm looking into providing several methods of visualizing a large volume of data. This may include, but will not be limited to, simple graphing. The techniques I'm exploring will involve shapes, text and lines. It will also involve interaction with elements (hiding, focusing, etc.) and animation (shifting, dragging, systematic reorganizing, etc.) of those elements.

SVG or Canvas seem like the obvious choices (in conjunction with a JS library--probably jQuery), but the lack of cross-browser availability is a concern. I'd prefer to avoid Flash/Flex, but right now it's the only rock solid, cross-browser technology I've found if support for IE7/8 is a requirement.

Does anyone have any other suggestions or any additional information that would make a technology I've listed seem even more appealing?

Thanks.

A: 

SVG and Canvas works for relatively simple data (i.e. where a few lines are enough). For complex data (say, frequency distributions, or something where you emit one sample per pixel), you should render a normal image on the server.

Aaron Digulla
At the moment, I'm trying to avoid the question of performance (which I'm assuming is the reason for your suggestion of rendering an image). Certainly, when/if performance becomes an issue, we'll have to do something to "cache" the output and that will likely be to create an image and do away w/ real-time accuracy. If you had another reason in mind, please elaborate.
Rob Wilkerson
As I said, it depends on the data. If you render more than 10'000 lines, SVG and Canvas will start to get slow because you need to parse a 1MB document just for the coordinates while an image will only need a few 100KB.
Aaron Digulla
+1  A: 

HighCharts is a Javascript, good, free and cross-browser charting tool.

Take a look at the Highcharts demo

medopal
Slick stuff, but seems to only support traditional graphing. I need to support cloud groups, fractals, etc. Same ideas, but visually outside of the traditional graphing package mold.
Rob Wilkerson
A: 

If you are using jquery for the graphing, I would definiately check out Flot which is as cross browser graphing/charting library.

Jon
+1  A: 

SVG is available on everything except IE, and VML is available on IE (since 5.5, IIRC). If you can serve both SVG and VML, you'll have vector graphics that virtually everyone can see. RaphaelJS is a Javascript library that can generate both formats from the same Javascript code, but of course that's just one way to do it.

Canvas is also available pretty much on everything except IE, but some crazy people wrote something called excanvas that emulates Canvas in, again, VML. From my friends and coworkers who have used it, I've heard the performance is worse than pretty much any other browser graphics solution, but if you want to do bitmap graphics portably, it's pretty much the only non-plugin game in town.

Which route you take -- vector or raster -- really depends on your application.

Ken
Rob Wilkerson
+1  A: 

You might want to take a look at Raphael and GRaphael. Raphael allows you to create vector graphics and will use SVG on SVG-capable browsers while automatically switching to VML on IE.

You could also take a look at the canvas-based processing.js.

awesomo
Those are both on the list. Thanks.
Rob Wilkerson
I think I'm going to start with Raphael. It's cross-browser (read: it'll work in IE) and seems pretty powerful.
Rob Wilkerson
+1  A: 

You might also try Protovis. (http://vis.stanford.edu/protovis/)

Jay Askren
+2  A: 

Check out the original Processing.org.

It may seem strange/anachronistic that they are using Java applets, but they were able to get better performance with Java than JavaScript. The applets seem to work everywhere, and you'll have access to lots of great Java libraries.

joecan
+1  A: 

Don't think I saw this one mentioned: JavaScript InfoViz Toolkit

An interesting visualization I personally like is the treemap view. Nice for summarizing a lot of data in a single view.

Binary Nerd

related questions