我想向 ggplot
传递一个 x
和 y
变量,其中名称来自另一个数据框。
我认为可以使用 aes_string()
参数并传递 data1
中的列名称,但使用 data2
中的数据。
data(iris)
data1 <- iris
data2 <- data
dev.off()
ggplot() +
geom_point(aes_string(
x = rlang::eval_tidy(colnames(data1)[1]),
y = rlang::eval_tidy(colnames(data1)[2])
), data = data2
)
如何使用类似于 eval_tidy
的方式传递变量名称?
最佳答案
我们可以转换为 sym
bol 并在 aes
中求值 (!!
)
library(ggplot2)
ggplot() +
geom_point(aes(
x = !!rlang::sym(colnames(data1)[1]),
y = !!rlang::sym(colnames(data1)[2])), data = data2)
注意:aes_string
已被弃用。因此,我们要么将不带引号的参数作为 quosure 传递并求值 (!!
),要么使用 {{...}}
或使用字符串,转换为 sym
bol并评估
关于r - 将列名从不同的数据框传递到 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175966/