I have a dataframe with several variables that I wish to label and then use in several ggplots. I have applied labels using the labeller package with the following code.
library(tidyverse)
library(labeller)
library(ggpubr)
example.df <- data.frame(
origin = sample(c("hum_1", "mou_1"), 100, replace = TRUE),
v1 = rnorm(100, 100, 5),
v2 = rnorm(100, 10,5),
v3 = rnorm (100, 25, 5))
example.df <- example.df %>% set_variable_labels(origin = "original sample", v1 = "effect of Rx", v2 = "response", v3 = "weight (kg)")
This gets the labels to show up in the dataframe. However, when I use ggqqplot from ggpubr to plot these variables I don't see the labels in the resultant plots.
vars <- dput(colnames(select_if(example.df, is.numeric)))
lapply(vars, function(item) {
ggqqplot(example.df, x=item, combine = FALSE, facet.by = "origin")+
ggtitle(item)
}
)
I would like to have original sample, effect of rx and weight (kg) show up instead of v1, v2 and v3. Any help is much appreciated. Thanks.
You can give the names to vars then use either map2() or imap() functions from the purrr package to cycle through them. To include superscripts/subscripts/math notation, use expression() together with parse(text = ...) (see also these example1, example2).
names(vars) <- c(expression('effect of Rx'^{1}),
"response",
expression(weight/individual %.% kg[2])
)
vars
#> "effect of Rx"^{\n 1\n} response
#> "v1" "v2"
#> weight/individual %.% kg[2]
#> "v3"
### from purrr package
map2(vars, names(vars), ~ ggqqplot(example.df, x = .x, combine = FALSE, facet.by = "origin") +
ggtitle(parse(text = .y)))
# or `imap(x, ...)` which is short hand for map2(x, names(x), ...)
imap(vars, ~ ggqqplot(example.df, x = .x, combine = FALSE, facet.by = "origin") +
ggtitle(parse(text = .y)))
#> $`"effect of Rx"^{\n 1\n}`
#>
#> $response
#>
#> $`weight/individual %.% kg[2]`
Created on 2019-03-11 by the reprex package (v0.2.1.9000)
来源:https://stackoverflow.com/questions/55112107/use-dataframe-variable-names-in-plot-titles


