【问题标题】:How to change the lab name corresponding to function in ggplot如何更改ggplot中函数对应的实验室名称
【发布时间】:2019-08-16 19:57:31
【问题描述】:

我有几个函数被最终函数调用以绘制 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,但它总是显示 vari。你能帮我解决问题吗这个?

谢谢。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。准确显示你是如何调用这个函数的。还要确保语法正确。您似乎在first_plot 中缺少)
  • 您可以尝试添加xlab(quo_name(vari))
  • 我试过但没用。

标签: r ggplot2 dplyr sparklyr


【解决方案1】:

看起来您需要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)

应该做这个情节

【讨论】:

  • 谢谢。很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多