Использовать коэффициенты из фрейма данных в stat_function - PullRequest
1 голос
/ 17 июня 2020

У меня есть коэффициенты для кривой, и я хочу нарисовать кривую в ggplot2. Моя формула - это просто полином:

y = a * x^2 + b * x + c  

Я отфильтровываю свой гигантский фрейм данных, поэтому у меня есть только одна группа вроде этой:

df <- data.frame(group = c("la", "li", "lo"), 
                 x_variable = c(20000, 32000, 48000), 
                 y_variable = c( 175,  200, 250),
                 coef_a = c(0.000000308, 0.000000308, 0.000000308),
                 coef_b = c(-0.0168, -0.0168, -0.0168), 
                 coef_c = c(437, 437, 437))  

Вот что я пробовал:

ggplot(df, aes(x = x_variable, y = y_variable)) + 
 geom_point() +
 stat_function(fun = ~ .coef_a * .x^2 + .coef_b * .x + .coef_c)  

Я получаю

Предупреждение. Ошибка вычисления в stat_function(): объект '.coef_a' не найден

Я думал, что использование . будет относиться к назад к фрейму данных. Что мне не хватает?

1 Ответ

0 голосов
/ 17 июня 2020

Я бы предложил определить вашу функцию в другом месте, чтобы затем вы могли использовать стандартный аргумент args = из stat_function.

f <- function(x, coef_a, coef_b, coef_c) coef_a * x^2 + coef_b * x + coef_c

ggplot(df, aes(x = x_variable, y = y_variable)) + 
    geom_point() +
    stat_function(fun = f, args = list(coef_a = df$coef_a, coef_b = df$coef_b, coef_c = df$coef_c)) 

Насколько я понимаю, без использования coef_a, coef_b и coef_c в функции aes означает, что вам нужно ссылаться на них явно. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...