[R] Referencing a vector of data labels in ggplot function

Hadley Wickham hadley at rice.edu
Sat Jul 9 16:38:22 CEST 2011


Maybe something like this?

withNames <- function(dframe, lineNames, plotName, colors){
  one_day <- subset(dframe, data == '1941-06-16')
  one_day$lineNames <- lineNames

  ggplot(dframe, aes(date, value, group = factor, color = factor)) +
    geom_line(size = 1) +
    facet_grid(Facet~., scales = 'free') +
    geom_text(aes(label = lineNames), data = one_day, vjust = 1) +
    scale_colour_manual(values = colors) +
    opts(title = plotName)
}

withNames(data, plines, pTitle, col1)

It's not at all clear how you expect the line names to be matched up
to the lines though.

Hadley

On Fri, Jul 8, 2011 at 3:39 PM, Ben Hunter <bjameshunter at gmail.com> wrote:
> Hi,
>
> I really feel I've looked everywhere, although I know this can't be a hard
> problem. I'd like to be able to call the graph below as a function, but I
> can't get the function to recognize variables beyond 'dframe'. I've read
> through many papers on writing functions in R, but I can't get this to work.
>
> data <- data.frame('date' = as.Date(rep(c(15101,
>            15108, 15115, 15122, 15129, 15136, 15143, 15150),4),
>            origin = '1899-12-30'),
>            'factor' = factor(rep(c('first','second'), each = 8, 2)),
>            'value' = rep(c(429258, 430645, 431165, 431360, 452284, 467316,
> 467326, 467330,
>            375588, 411383, 427179, 364582, 351494, 359034, 374047,
>            339628),2),
>            'Facet' = rep(c('bottom','top'), each = 16))
>
> pTitle <- 'Main Title'
> plines <- c('Line 1', 'Line 2','Line 3', 'Line 4')
> col1 <- c('#ec421e', '#f7bd2e','#ec421e', '#f7bd2e')
>
> #If I use the line below and explicitly place plines, pTitle and col1 in the
> appropriate places
> #it will work fine. I want to use the line as written without the hashmark.
> #simple <- function(dframe){
>
> withNames <- function(dframe, lineNames, plotName, colors){
>    p <- ggplot(dframe, aes(date, value, group = factor, color = factor))
>    p2 <- p + geom_line(size = 1)
> #   + opts(title = plotName)
>    p2 <- p2 + facet_grid(Facet~., scales = 'free') +
> #    p2 <- p2 + geom_text(data = dframe[dframe[,'date'] == '1941-06-16',],
> #          aes(date, value, label = lineNames, vjust = 1)) +
>          scale_colour_manual(values = colors)
> }
>
> finalP <- withNames(data, plines, pTitle, col1)
>
> #finalP <- simple(data)
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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