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