ggtern 自定义函数对象 x 未找到错误
ggtern custom function object x not found error
我正在尝试使用包 ggtern
创建一个绘制三元图的自定义函数
这里是数据和函数的例子
library(tidyverse)
library(ggtern)
myData <- tibble(T_x = c(0.461, 0.778, 0.429),
T_y = c(0.126, 0.108, 0.404),
T_z = c(0.413, 0.114, 0.167))
drawTriad <- function(df, x, y, z) {
x <- enquo(x)
y <- enquo(y)
z <- enquo(z)
df %>%
ggtern::ggtern(aes(!!x,
!!y,
!!z)) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
当我 运行 myData 上的函数是这样的:
drawTriad(myData, T_x, T_y, T_z)
我收到以下错误:FUN(X[[i]], ...) 中出错:找不到对象 'x'
如何让这个简单的功能发挥作用?
几个选项...
library(ggplot2)
library(magrittr)
library(tibble)
library(ggtern)
选项 1
这更简单:只需重命名源数据框或 tibble 中的变量以适合 ggtern,这避免了点坐标的编程变量问题。
drawTriad <- function(df) {
df %>%
ggtern::ggtern(aes(x, y, z)) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
drawTriad(myData)
选项 2
这是基于ggplot2: elegant graphics for data analysis https://ggplot2-book.org/programming.html中给出的解释。并匹配问题中提出的问题。
drawTriad <- function(df, x, y, z) {
df %>%
ggtern::ggtern(aes_(x = as.name(x), y = as.name(y), z = as.name(z))) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
drawTriad(df = myData,
x = "T_x",
y = "T_y",
z = "T_z")
由 reprex package (v2.0.1)
于 2021-12-13 创建
我正在尝试使用包 ggtern
这里是数据和函数的例子
library(tidyverse)
library(ggtern)
myData <- tibble(T_x = c(0.461, 0.778, 0.429),
T_y = c(0.126, 0.108, 0.404),
T_z = c(0.413, 0.114, 0.167))
drawTriad <- function(df, x, y, z) {
x <- enquo(x)
y <- enquo(y)
z <- enquo(z)
df %>%
ggtern::ggtern(aes(!!x,
!!y,
!!z)) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
当我 运行 myData 上的函数是这样的:
drawTriad(myData, T_x, T_y, T_z)
我收到以下错误:FUN(X[[i]], ...) 中出错:找不到对象 'x'
如何让这个简单的功能发挥作用?
几个选项...
library(ggplot2)
library(magrittr)
library(tibble)
library(ggtern)
选项 1
这更简单:只需重命名源数据框或 tibble 中的变量以适合 ggtern,这避免了点坐标的编程变量问题。
drawTriad <- function(df) {
df %>%
ggtern::ggtern(aes(x, y, z)) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
drawTriad(myData)
选项 2
这是基于ggplot2: elegant graphics for data analysis https://ggplot2-book.org/programming.html中给出的解释。并匹配问题中提出的问题。
drawTriad <- function(df, x, y, z) {
df %>%
ggtern::ggtern(aes_(x = as.name(x), y = as.name(y), z = as.name(z))) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
drawTriad(df = myData,
x = "T_x",
y = "T_y",
z = "T_z")
由 reprex package (v2.0.1)
于 2021-12-13 创建