Hi everyone, Hi ggplot users in particular,

ggplot makes it very easy to plot things given their names when you  
use it interactively (and therefore can provide the names of the  
columns).
        qplot(x,foo,data=A) where A has columns (x,y,foo,bar) for example

but I would like to use this from inside a function to which the name  
of the column is given. I cannot find an elegant way to make this  
work. Here are my attempts:

#------------------------------------------------------------

library(ggplot2)

A = data.frame(x=rep(1:10,10), y=rep(1:10,each=10), u=runif(100),  
v=rnorm(100))

# goal: extract values for y<=5 and plot them, either for u or v

foo1 <- function(uv="u")
{
        # solution 1: do not use the data argument at all
        #       (forces the use of qplot, could be more elegant)
        B = A[A$y<=5,]
        qplot(B$x, B$y, fill=B[[uv]], geom="tile")
}

foo2 <- function(uv="u")
{
        # solution 2: extract and rename the colums, then use the data argument
        #       (enables ggplot but could be shorter)
        B = A[A$y<=5,c("x","y",uv)]
        names(B)[3] = "value"
        # rem: cannot use rename since rename(B,c(uv="value")) would not work
        qplot(x, y, fill=value, data=B, geom="tile")
        # or
        # ggplot(B,aes(x=x,y=y,fill=value)) + geom_tile()
}

foo3 <- function(uv="u")
{
        # solution 3: use the data argument and perform the extraction  
directly in it
        #       (elegant and powerful but can't make it work)
        ggplot(A[A$y<=5,c("x","y",uv)],aes(x=x,y=y,fill=???)) + geom_tile()
        # or
        ggplot(A[A$y<=5,],aes(x=x,y=y,fill=???)) + geom_tile()
        # or ...        
}

print(foo1("u"))
print(foo1("v"))
print(foo2("u"))
print(foo3("u"))

#------------------------------------------------------------

Any help in making foo3 work would be appreciated. Thanks in advance  
for your expertise.

JiHO
---
http://jo.irisson.free.fr/

______________________________________________
R-help@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.

Reply via email to