[R] ggplot facet label font size

Deepayan Sarkar deepayan.sarkar at gmail.com
Sun Aug 6 08:17:56 CEST 2006


On 8/3/06, Walker, Sam <s-walker at 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?

This turns out to be surprisingly easy (surprising to me at least):


#########

my.strip <-
    function(which.given, which.panel, var.name, ...)
{
    if (which.given == 1 && which.panel[2] == 2)
        strip.default(1, which.panel[1],
                      var.name = var.name[1],
                      ...)
}


my.strip.left <-
    function(which.given, which.panel, var.name, ..., horizontal)
{
    if (which.given == 2 && which.panel[1] == 1)
        strip.default(1, which.panel[2],
                      var.name = var.name[2],
                      horizontal = FALSE, ...)
}


histogram(~ tip/total_bill | sex + smoker, tips,
          strip = my.strip,
          strip.left = my.strip.left,
          par.strip.text = list(lines = 0.6),
          par.settings =
          list(layout.heights = list(strip = c(0, 1)),
               layout.widths = list(strip.left = c(1, 0)),
               add.text = list(cex = 0.7)))


#########

The trick of changing two-line strips to one-line strips is not
obvious from the documentation (such as it is), it depends on the
implementation of strips.

HTH,

Deepayan

> 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 at gmail.com]
> Sent: Wednesday, August 02, 2006 6:04 PM
> To: Walker, Sam
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] ggplot facet label font size
>
> On 8/2/06, Walker, Sam <s-walker at 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 at 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.
>


-- 
http://www.stat.wisc.edu/~deepayan/



More information about the R-help mailing list