[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