[R] ggplot2: proper use of facet_grid inside a function

Bryan Hanson hanson at depauw.edu
Mon Oct 5 15:17:02 CEST 2009


Thanks Thierry for the work-around.  I was out of ideas.

I had looked around for the facet_grid() analog of aes_string(), and
concluded there wasn't one.  The only thing I found was the notion of

facet_grid("...") but apparently it is intended for some other use, as it
doesn't work as I thought it would (like a hypothetical
facet_grid_string()).

Thanks so much.  Bryan


On 10/5/09 4:12 AM, "ONKELINX, Thierry" <Thierry.ONKELINX at inbo.be> wrote:

> Dear Bryan,
> 
> In the ggplot() function you can choose between aes() and aes_string().
> In the first you need to hardwire the variable names, in the latter you
> can use objects which contain the variable names. So in your case you
> need aes_string().
> 
> Unfortunatly, facet_grid() works like aes() and not like aes_string().
> That is why you are getting errors.
> 
> A workaround would be to add a dummy column to your data.
> 
> library(ggplot2)
> data <- mpg
> fac1 <- "cty"
> fac2 <- "drv"
> res <- "displ"
> data$dummy <- data[, fac2]
> ggplot(data, aes_string(x = fac1, y = res)) + geom_point() +
> facet_grid(.~dummy)
> 
> HTH,
> 
> Thierry
> 
> 
> ------------------------------------------------------------------------
> ----
> ir. Thierry Onkelinx
> Instituut voor natuur- en bosonderzoek / Research Institute for Nature
> and Forest
> Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
> methodology and quality assurance
> Gaverstraat 4
> 9500 Geraardsbergen
> Belgium
> tel. + 32 54/436 185
> Thierry.Onkelinx at inbo.be
> www.inbo.be
> 
> To call in the statistician after the experiment is done may be no more
> than asking him to perform a post-mortem examination: he may be able to
> say what the experiment died of.
> ~ Sir Ronald Aylmer Fisher
> 
> The plural of anecdote is not data.
> ~ Roger Brinner
> 
> The combination of some data and an aching desire for an answer does not
> ensure that a reasonable answer can be extracted from a given body of
> data.
> ~ John Tukey
>  
> -----Oorspronkelijk bericht-----
> Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> Namens Bryan Hanson
> Verzonden: vrijdag 2 oktober 2009 17:21
> Aan: <R Help
> Onderwerp: [R] ggplot2: proper use of facet_grid inside a function
> 
> Hello Again R Folk:
> 
> I have found items about this in the archives, but I'm still not getting
> it right.  I want to use ggplot2 with facet_grid inside a function with
> user specified variables, for instance:
> 
>     p <- ggplot(data, aes_string(x = fac1, y = res)) + facet_grid(. ~
> fac2)
> 
> Where data, fac1, fac2 and res are arguments to the function.  I have
> tried
> 
>     p <- ggplot(data, aes_string(x = fac1, y = res)) + facet_grid(. ~
> as.name(fac2))
> 
> and 
> 
>     p <- ggplot(data, aes_string(x = fac1, y = res)) + facet_grid(". ~
> fac2")
> 
> But all of these produce the same error:
> 
> Error in `[.data.frame`(plot$data, , setdiff(cond, names(df)), drop =
> FALSE) : 
>   undefined columns selected
> 
> If I hardwire the true identity of fac2 into the function, it works as
> desired, so I know this is a problem of connecting the name with the
> proper value.
> 
> I'm up to date on everything:
> 
> R version 2.9.2 (2009-08-24)
> i386-apple-darwin8.11.1
> 
> locale:
> en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
> 
> attached base packages:
> [1] grid      datasets  tools     utils     stats     graphics
> grDevices methods
> [9] base     
> 
> other attached packages:
>  [1] Hmisc_3.6-0        ggplot2_0.8.3      reshape_0.8.3
> proto_0.3-8      
>  [5] mvbutils_2.2.0     ChemoSpec_1.1      lattice_0.17-25
> mvoutlier_1.4    
>  [9] plyr_0.1.8         RColorBrewer_1.0-2 chemometrics_0.4   som_0.3-4
>        
> [13] robustbase_0.4-5   rpart_3.1-45       pls_2.1-0          pcaPP_1.7
>        
> [17] mvtnorm_0.9-7      nnet_7.2-48        mclust_3.2
> MASS_7.2-48      
> [21] lars_0.9-7         e1071_1.5-19       class_7.2-48
> 
> loaded via a namespace (and not attached):
> [1] cluster_1.12.0
> 
> Thanks for any help!  Bryan
> *************
> Bryan Hanson
> Professor of Chemistry & Biochemistry
> DePauw University, Greencastle IN USA
> 
> ______________________________________________
> 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.
> 
> Druk dit bericht a.u.b. niet onnodig af.
> Please do not print this message unnecessarily.
> 
> Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer
> en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd
> is
> door een geldig ondertekend document. The views expressed in  this message
> and any annex are purely those of the writer and may not be regarded as
> stating 
> an official position of INBO, as long as the message is not confirmed by a
> duly 
> signed document.




More information about the R-help mailing list