I\'m playing around with drawing bubble charts in R -- the current project is to graph a bubble chart of political donations that has the following characteristics:
This is easy when you use the ggplot2
package with geom_point
.
One of many benefits of using ggplot
is that the built-in statistics means you don't have to pre-summarise your data. geom_point
in combination with stat_sum
is all you need.
Here is the example from ?geom_point
. (Note that mtcars
is a built-in dataset with ggplot2
.)
See the ggplot website and geom_point for more detail.
library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(size = qsec))
You can use ddply
from package plyr
here. If your original data.frame was called dfr
, then something close to this should work:
result<-ddply(dfr, .(CTRIB_AMT), function(partialdfr){data.frame(amt=partialdfr$CTRIB_AMT[1], sm=sum(partialdfr$CTRIB_AMT), mn=mean(partialdfr$CTRIB_AMT)) })
In fact, a base R solution is also rather simple:
vals<-sort(unique(dfr$CTRIB_AMT))
sums<-tapply( dfr$CTRIB_AMT, dfr$CTRIB_AMT, sum)
counts<-tapply( dfr$CTRIB_AMT, dfr$CTRIB_AMT, length)
I'm sure more elegant solutions exist.