# DataViz

I will be gradually posting various cool examples of Data Visualization in R, Python, JavaScript, etc. Here are some recommended resources:

## Contents |

### Books

- Visualize This by Nathan Yau, the guy behind the Flowing Data blog

### Graphing libraries

- GGplot graphing library for R
- MatPlotLib, the basic plotting library for Python.
- EazyViz more Python graphing. Check out the 3D quiver plot!
- Mayavi2, a sophisticated visualization platform especially for 3D and complex visualization. Includes a GUI.

### Tutorials

I was going to do this precise tutorial showing how to create publication-quality *useful* graphs with ggplot, but someone (thankfully) beat me to it.
Psychology-type graphs using GGplot. These examples also show one way to convert between 'wide' types (bad) and 'long' types (good). For more flexible conversions check out the melt and cast functions in the reshape package written by Hadley Wickham, also the author of GGPlot.

Joe Fruehwald's GGPlot tutorial. Notice in particular the graphs that use an interaction factor, e.g., factor=subj:block)

Another excellent set of examples with an emphasis on displaying within-subject error bars (something most people do incorrectly). The R Cookbook site has some other excellent tutorials on ggplot.

It can be annoying to figure out how to set the attributes (font, size, etc.) of various graph attributes. Here are some descriptions of ggplot theme definitions, and examples of modifying ggplot legends

## Examples

#### Plotting a 3d trajectory from some points using splines (in R)

library(rgl) x <- splinefun(1:10, c(25,12,2,2,1,1,4,10,12,14)) #splinefun fits a spline y <- splinefun(1:10, c(32,25,12,2,2,2,5,7,8,10)) z <- splinefun(1:10, c(40,32,25,12,10,12,25,32,40,44)) times <- seq(1, 10, len=200) plot3d(x(times), y(times), z(times), type="l",xlab="x",ylab="y",zlab="z",col="red")

If you want to plot multiple trajectories on the same graph, add additional ones like so:

plot3d(x2(times), y2(times), z2(times), type="l",add=TRUE,col="green") plot3d(x3(times), y3(times), z3(times), type="l",add=TRUE,col="red")

You can spin the graph around using the mouse and zoom-in/out using the mousewheel. Save it using rgl.snapshot. See ?rgl.snapshot for info on syntax.