R语言 在函数内部传递ggplot2标题

kh212irz  于 2023-01-28  发布在  其他
关注(0)|答案(3)|浏览(138)

我需要指定一个由ggplot图表所选列决定的标题。我需要能够为数据框中的几个列制作图表。

cola <- c(11, 13, 17, 12, 34)
colb <- c(23, 41, 32, 58, 26)
colc <- c(1, 2, 3, 4, 5)
dfb <- data.frame(cola, colb, colc)

library(ggplot2)
graph_func <- function(col) {
  dfb %>% ggplot(aes(x=colc, y=!!col)) +
    geom_point() +
    ggtitle(title = !!col)
} 

graph_func(quo(colb))

我希望标题为“colb”,但我收到一条错误消息:

> Error in ggtitle(caption = !!col) : unused argument (caption = !!col)
tcomlyy6

tcomlyy61#

您不需要将参数括起来。请改用!!enquo方括号{{ }}:

graph_func <- function(col) {
  dfb %>% ggplot(aes(x=colc, y= {{ col }})) +
    geom_point() +
    ggtitle(enquo(col))
} 

graph_func(colb)

xzlaal3s

xzlaal3s2#

我们可以使用deparse(substitute(var)

graph_func <- function(col) {
  dfb %>% ggplot(aes(x = colc, y = !!col)) +
    geom_point() +
    ggtitle(deparse(substitute(col)))
}

graph_func(colb)

1hdlvixo

1hdlvixo3#

我们可以用

library(ggplot2)
 graph_func <- function(col) {
  col <- rlang::as_string(rlang::ensym(col))
   dfb %>% ggplot(aes(x=colc, y=.data[[col]])) +
     geom_point() +
     ggtitle(col)
 }
graph_func(colb)

相关问题