簡體   English   中英

ggtern 自定義 function object x 未找到錯誤

[英]ggtern custom function object x not found error

我正在嘗試使用 package ggtern 創建一個自定義 function 繪制三元ggtern

這是數據和 function 的示例

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 上運行 function 時:

drawTriad(myData, T_x, T_y, T_z)

我收到以下錯誤: FUN(X[[i]], ...) 中的錯誤:object 'x' not found

我怎樣才能讓這個簡單的 function 工作?

幾個選項...

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:用於數據分析的優雅圖形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")

代表 package (v2.0.1) 於 2021 年 12 月 13 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM