我想创建一个 2x2 的面网格,需要两个不同的贴标机。
a) 将逻辑参数转换为“凝血酶之前”或“凝血酶之后”:
thrombin_names <- c(
FALSE= "before thrombin",
TRUE` =“凝血酶后”)
情节<- ggplot(data = current_data, aes(x = which_timepoint, y = dIami, group = ID)) + facefacet_grid(group ~ thrombin, labeller = labeller(thrombin = as_labeller(thrombin_names))) + `
b) 将给定的表达式转换为希腊字母:
`group_labels <- c("alphabetagamma", “alpha*beta['ins2X']*gamma”)
当前_数据$组<- factor(current_data$group, levels = c("wt", "2x"), labels = group_labels)
情节<- ggplot(data = current_data, aes(x = which_timepoint, y = dIami, group = ID)) + facet_grid(group ~ thrombin, labeller = label_parsed) + `
这两个标签功能本身都可以完美运行。但是,我仍在寻找一种解决方案,使它们同时工作。
我尝试创建一个结合两个贴标器函数的函数,这样我就可以将一个贴标器函数放入facet_grid中:
`组合贴标机 <- function(data, params) { labeller1 <- labeller(thrombin = as_labeller(thrombin_names)) labeller2 <- labeller()
lapply(参数,函数(变量){ 如果(变量==“凝血酶”){ labeller1(数据,参数) } 别的 { labeller2(数据,参数) } }) }
情节<- ggplot(data = current_data, aes(x = which_timepoint, y = dIami, group = ID)) + facet_grid(group ~ thrombin, labeller = combined_labeller) + ... ` I got an error in labeller(label_df) : argument "params" missing
不需要
as_labeller
或单独的函数。您可以指定要应用于 one labeller()
中的行或列的标签“函数”,如下所示。
使用一些虚假的示例数据:
library(ggplot2)
current_data <- expand.grid(
thrombin = c(TRUE, FALSE),
group = c("wt", "2x")
) |>
transform(
ID = 1,
which_timepoint = 1,
dIami = 1
)
thrombin_names <- c("FALSE" = "before thrombin", "TRUE" = "after thrombin")
group_labels <- c("alphabetagamma", "alpha*beta['ins2X']*gamma")
names(group_labels) <- c("wt", "2x")
current_data$group <- factor(
current_data$group,
levels = c("wt", "2x"),
labels = group_labels
)
ggplot(data = current_data, aes(x = which_timepoint, y = dIami, group = ID)) +
geom_point() +
facet_grid(group ~ thrombin,
labeller = labeller(
thrombin = thrombin_names,
group = label_parsed
)
)