在 R 中自定义 facet_wrap 绘图标签?
Customize facet_wrap plot label in R?
我在 R 中创建了一个 facet_wrap
图,我正在尝试自动化 labeller
。我可以使用以下代码手动创建自定义标签:
library(ggplot2)
library(tidyverse)
df <- data.frame(a = rep(c(1/8,1/4,1/2), each = 100),
b = rep(c("A", "B", "C", "D"), each = 25),
x = rnorm(100))
names <- c(
`0.125` = "alpha~`=`~1/8",
`0.25` = "alpha~`=`~1/4",
`0.5` = "alpha~`=`~1/2"
)
df %>% ggplot() +
geom_density(aes(x = x, colour = b))+
facet_wrap(~a, labeller = labeller(a = as_labeller(names, label_parsed)))
上面的代码产生了这个情节:
facetplot
如您所见,我在 names
变量中创建自定义名称,然后将其传递给 labeller
参数。我想想出一种方法来自动化这个过程。所以我可以使用任何名称向量。有什么建议吗?
我想我有一个可能的解决方案。如果用户提供了一个个性化的值向量,比如 vec <- c(1/5, 'Hello', 3.14)
那么我 遍历 vector
的每个值并 粘贴 alpha [=18= 的 unicode 值]并把它变成一个列表。在此之后,我创建了一种虚拟函数,其中包含我的新标签标题列表,并将其传递给标签函数:
# EDIT: removed loop with help from comments!
#nam <- NULL
# for(i in 1:(length(vec))){
# nam[i] <- list(paste0('\u03b1',"=", vec[i]))
#}
nam <- paste0('\u03b1',"=", vec)
custLab <- function (x){
nam
}
p <- df %>% ggplot() +
geom_density(aes(x = x, colour = b))+
facet_wrap(~a, labeller = as_labeller((custLab)))
我在 R 中创建了一个 facet_wrap
图,我正在尝试自动化 labeller
。我可以使用以下代码手动创建自定义标签:
library(ggplot2)
library(tidyverse)
df <- data.frame(a = rep(c(1/8,1/4,1/2), each = 100),
b = rep(c("A", "B", "C", "D"), each = 25),
x = rnorm(100))
names <- c(
`0.125` = "alpha~`=`~1/8",
`0.25` = "alpha~`=`~1/4",
`0.5` = "alpha~`=`~1/2"
)
df %>% ggplot() +
geom_density(aes(x = x, colour = b))+
facet_wrap(~a, labeller = labeller(a = as_labeller(names, label_parsed)))
上面的代码产生了这个情节:
facetplot
如您所见,我在 names
变量中创建自定义名称,然后将其传递给 labeller
参数。我想想出一种方法来自动化这个过程。所以我可以使用任何名称向量。有什么建议吗?
我想我有一个可能的解决方案。如果用户提供了一个个性化的值向量,比如 vec <- c(1/5, 'Hello', 3.14)
那么我 遍历 粘贴 alpha [=18= 的 unicode 值]并把它变成一个列表。在此之后,我创建了一种虚拟函数,其中包含我的新标签标题列表,并将其传递给标签函数:vector
的每个值并
# EDIT: removed loop with help from comments!
#nam <- NULL
# for(i in 1:(length(vec))){
# nam[i] <- list(paste0('\u03b1',"=", vec[i]))
#}
nam <- paste0('\u03b1',"=", vec)
custLab <- function (x){
nam
}
p <- df %>% ggplot() +
geom_density(aes(x = x, colour = b))+
facet_wrap(~a, labeller = as_labeller((custLab)))