r - 将列名从不同的数据框传递到 ggplot

标签 r ggplot2

我想向 ggplot 传递一个 xy 变量,其中名称来自另一个数据框。

我认为可以使用 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 的方式传递变量名称?

最佳答案

我们可以转换为 symbol 并在 aes 中求值 (!!)

library(ggplot2)
ggplot() +
  geom_point(aes(
    x = !!rlang::sym(colnames(data1)[1]),
    y = !!rlang::sym(colnames(data1)[2])), data = data2)

注意:aes_string 已被弃用。因此,我们要么将不带引号的参数作为 quosure 传递并求值 (!!),要么使用 {{...}} 或使用字符串,转换为 symbol并评估

关于r - 将列名从不同的数据框传递到 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175966/

相关文章:

r - 如何在不聚合的情况下在 reshape 中使用 "cast"

r - ggplot2 map 上的多个站点

rvest:使用 url 而不是文本提取表

r - 如何在R中绘制堆栈系列线图?

r - ggplot : rescale axis (log) and cut axis

r - 堆栈条形图 (ggplot) 上乱序的文本标签

r - ggplot中轴标题中的多种颜色

r - 使用 geom_hex 将变量映射到六边形大小

r - ggplot2 2.1.0 破坏了我的代码?次要变换轴现在显示不正确

R,如何改变plotly 3d表面的颜色?