如何在 ggplot 分面网格中组合 2 个贴标器函数?

问题描述 投票:0回答:1

我想创建一个 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

r ggplot2 label facet-grid
1个回答
0
投票

不需要

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
    )
  )

© www.soinside.com 2019 - 2024. All rights reserved.