Re: [R] ggplot facet label font size

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Fri 04 Aug 2006 - 12:24:02 EST

If you are willing to use grid then you could create only the sex factor in the left strips since its already in the desired position but when displaying it output a factor.level, i.e. label of "A". (my.strip.left is modified from the prior post to do that.)

Then after the plot is drawn, looping through all grobs looking for those with a label component of "A" producing a list of grob names, strip.left.names. We then mapply the real factor levels with those grobs editing them in reset.levels(), defined below. (I have used the fact, empirically determined that the stripts are produced in order of the factor levels.)

Everything is the same as the last post except my.strip.left which has been modified and everything which comes after the call to histogram.

Although this seems to work, maybe Deepayan or Paul can think of something slicker.

library(ggplot) # data resides here
library(lattice)
library(grid)

my.strip <- function(which.given, which.panel, ...)

   if (which.given == 1 && which.panel[2] == 2)

      strip.default(which.given, which.panel, ...)

my.strip.left <- function(which.given, which.panel, ...,

   factor.levels, horizontal)
   if (which.given == 1 && which.panel[1] == 1)

      strip.default(which.given, which.panel, factor.levels = LETTERS,
      horizontal = FALSE, ...)


histogram(~ tip/total_bill | sex + smoker, tips, strip = my.strip,
     strip.left = my.strip.left, par.settings = list(add.text =
list(cex = 0.7)))

is.strip.left <- function(name) identical(grid.get(name)$label, "A") strip.left.names <- getNames()[sapply(getNames(), is.strip.left)]

reset.levels <- function(nam, lev) grid.edit(nam, label = lev) mapply(reset.levels , strip.left.names, levels(tips$smoker))

On 8/3/06, Walker, Sam <s-walker@ti.com> wrote:
>
> This works OK, but there is some extra spacing between the panels, the
> top axis and the strip on the top, and the left labels and panel.
>
> How can I remove these extra spaces?
>
> I've tried changing various layout.widths settings with no luck. It
> seems the spaces are calculated based on the number of conditioning
> variables, in this case 2 (sex+smoker).
>
>
> Thanks in advance...
> -Sam
>
>
> -----Original Message-----
> From: Gabor Grothendieck [mailto:ggrothendieck@gmail.com]
> Sent: Wednesday, August 02, 2006 6:04 PM
> To: Walker, Sam
> Cc: r-help@stat.math.ethz.ch
> Subject: Re: [R] ggplot facet label font size
>
> On 8/2/06, Walker, Sam <s-walker@ti.com> wrote:
> > How do I change the font size in the facet labels along the edges of
> the
> > plot?
> >
> > For example (from the ggplot help file):
> > p<-ggplot(tips, sex ~ smoker, aesthetics=list(x=tip/total_bill))
> > gghistogram(p)
> >
> > In this plot, the facet labels are "smoker: No", "smoker: Yes", "sex:
> > Female", "sex: Male". What command can I use to reduce the font size
> of
> > these labels?
> >
> > In lattice terminology, cex is used to scale these strip labels. But
> I
> > couldn't find the equivalent in ggplot.
> >
> > The reason I'm asking is I have a 9x7 array of plots which I've been
> > plotting with lattice. I wanted to use ggplot because I like having
> the
> > labels on the edge of the plots
>
> Note that lattice can do that by using custom strip functions:
>
> library(ggplot) # data resides here
> library(lattice)
>
> my.strip <- function(which.given, which.panel, ...)
> if (which.given == 1 && which.panel[2] == 2)
> strip.default(which.given, which.panel, ...)
>
> my.strip.left <- function(which.given, which.panel, ..., horizontal)
> if (which.given == 2 && which.panel[1] == 1)
> strip.default(which.given, which.panel, horizontal = FALSE, ...)
>
> histogram(~ tip/total_bill | sex + smoker, tips, strip = my.strip,
> strip.left = my.strip.left, par.settings = list(add.text =
> list(cex = 0.7)))
>
> ______________________________________________
> R-help@stat.math.ethz.ch 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.
>



R-help@stat.math.ethz.ch 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. Received on Fri Aug 04 12:28:07 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 05 Aug 2006 - 06:17:57 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.