如何更改ggplot中函数对应的实验室名称

How to change the lab name corresponding to function in ggplot

我有几个函数被最终函数调用来绘制 ggplot 图。我正在使用一个列表传递给函数调用,这样图形就可以通过它们中的每一个进行迭代。但是,xlab 显示不正确。

first_plot <- function(dta, vari) {
  vari <- enquo(vari)
  dta %>%
    group_by(!!vari) %>%
    summarize(a = mean(!!whatever) +
    ggplot(aes(x=!!vari)) +
    geom_point(aes(a)) 
}

plot_all <- function(dta, item) {
  list_var <- list(name = item)
  plot_list<- list()
  for(i in 1:length(item)) {
    vari <- sym(item[i])
    plot_list[[i]] <- first_plot(dta, vari) 
  }
}

如果我传递 plot_all(data, c('a','b','c'),我希望 xlab 会相应地显示 a、b、c但它总是显示不同。你能帮我解决这个问题吗?

谢谢。

看来您需要 as.name 而不是 first_plot 中的 enquo。然后 !! 将在创建绘图时起作用。 iris 数据的简化示例:

library(ggplot2)
library(cowplot)

first_plot <- function(dta, vari) {
  vari <- as.name(vari)
  ggplot(dta, aes(y = !!vari, x=Species)) +
    geom_point()
}

first_plot(iris, "Sepal.Length")
plot_list <- lapply(names(iris)[1:4], first_plot, dta=iris)
plot_grid(plotlist=plot_list)

应该拍这个剧情