[R] ggplot2 rose diagram

hadley wickham h.wickham at gmail.com
Wed Mar 10 15:14:33 CET 2010


For Q2 you can use opts(legend.position = c(0.9, 0.9)).

For Q3, you can also use scale_y_sqrt().

Hadley

On Wed, Mar 10, 2010 at 2:05 PM, Tim Howard <tghoward at gw.dec.state.ny.us> wrote:
> To answer two of my own questions to get them into the archives (I am slowly getting the hang of ggplot):
>
> Q1.  use "opts(axis.text.x = theme_text(size=xx))" to change font size of the bar labels:
>
> library(ggplot2)
> set.seed(5)
> dat <- sample(1:8,100,replace=TRUE)
> smp <- ggplot(data.frame(dat), aes(x=factor(dat),fill=factor(dat))) +
>                                                geom_bar(width=1) +
>                                                opts(axis.text.x = theme_text(size = 18))
> smp + coord_polar()
>
> Q3. calculate the frequencies themselves and use stat="identity" inside the aes call:
>
> L <- table(dat)
> L.df <- data.frame(L)
> L.df <- cbind(L.df, "SQRrelFreq" = sqrt(L.df[,2]/sum(L.df[,2])))
> smp2 <- ggplot(L.df, aes(x=dat,y=SQRrelFreq, stat="identity", fill=dat)) +
>                                                geom_bar(width=1) +
>                                                opts(axis.text.x = theme_text(size = 18))
> smp2 + coord_polar()
>
> Cheers,
> Tim
>
>>>> Tim Howard 3/9/2010 9:25 AM >>>
> Dear R gurus -
>
> consider this plot:
>
> library(ggplot2)
> dat <- sample(1:8,100,replace=TRUE)
> smp <- ggplot(data.frame(dat), aes(x=factor(dat),fill=factor(dat))) + geom_bar(width=1)
> smp + coord_polar()
>
>
> Q1. How do I change the font size and weight of bar labels (1,2,3...)?  I've been wallowing in the 'Themes' structure and I just can't figure out the correct place to change the definitions. Along these same lines, what does 'strip' mean when referring to strip text?
>
> Q2. How can I move the legend defining bar height into the plot, so that it overlays the lines they refer to?
>
>
> Consider the same figure using Circstats:
>
> library(CircStats)
> dat.rad <- (dat*((2*pi)/8)) -(2*pi)/16
> rose.diag(dat.rad, bins = 8)  #note the origin is to the right rather than on top
>
> Q3. The key difference is that CircStats uses an area-based calculation for the size of each slice, which makes for a different presentation than ggplot2. Any suggestions on how to use this calculation method in the ggplot framework?
>
> Thanks in advance for your help.
> Tim Howard
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/



More information about the R-help mailing list