Используйте коэффициенты для рисования кривой в ggplot - PullRequest
2 голосов
/ 16 июня 2020

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

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

У меня есть эти коэффициенты:

a <-  0.000000308  
b <- -0.0168  
c <-  437  

Я не знаю, упадут ли эти точки рядом с линией, но скажем, что мы это рисуем df:

df <- data.frame(group = c("a", "b", "c"), 
                 x_variable = c(20000, 32000, 48000), 
                 y_variable = c( 175,  200, 250))  

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

ggplot(df, aes(x = x_variable, y = y_variable)) + 
 geom_point() +
 # this next line doesn't work, is it close?
 # geom_smooth(method = 'lm', formula = y ~ 0.000000308 * x^2 + -0.0168 * x + 437)    

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Один из вариантов - использовать stat_function, который применяет функцию к сетке x значений, которая соответствует области построения:

ggplot(df, aes(x = x_variable, y = y_variable)) + 
  geom_point() +
  stat_function(fun = function(x){0.000000308 * x^2 + -0.0168 * x + 437})

enter image description here

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

Сначала сгенерируйте функциональную сетку, а затем постройте функцию вместе с вашими точками:

library(ggplot2)

a <-  0.000000308  
b <- -0.0168  
c <-  437 

grid <- data.frame( x = seq(15000, 60000, 1))
grid$y <- a*grid$x^2 + b*grid$x +c

points <- data.frame(x_variable = c(20000, 32000, 48000), 
                     y_variable = c( 175,  200, 250))

ggplot() +
  geom_line(data = grid, aes(x,y), color = "red") +
  geom_point(data = points, aes(x_variable,y_variable))
0 голосов
/ 16 июня 2020

Не уверен, что я полностью неправильно понимаю ваш вопрос, но я бы просто создал несколько точек выборки:

library(data.table)
DT = data.table(x=1:100000)
DT[,y := a * x^2 + b * x + c]
ggplot(DT,aes(x=x,y=y))+geom_smooth()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...