Построение функций поверх точек данных в R - PullRequest
9 голосов
/ 06 декабря 2009

Есть ли способ наложения математической функции поверх данных с использованием ggplot?

## add ggplot2
library(ggplot2)

# function
eq = function(x){x*x}

# Data                     
x = (1:50)     
y = eq(x)                                                               

# Make plot object    
p = qplot(    
x, y,   
xlab = "X-axis", 
ylab = "Y-axis",
) 

# Plot Equation     
c = curve(eq)  

# Combine data and function
p + c #?

В этом случае мои данные генерируются с помощью функции, но я хочу понять, как использовать curve() с ggplot.

Ответы [ 2 ]

16 голосов
/ 06 декабря 2009

Вы, вероятно, хотите stat_function:

library("ggplot2")
eq <- function(x) {x*x}
tmp <- data.frame(x=1:50, y=eq(1:50))

# Make plot object
p <- qplot(x, y, data=tmp, xlab="X-axis", ylab="Y-axis")
c <- stat_function(fun=eq)
print(p + c)

и если вы действительно хотите использовать curve(), т.е. вычисленные координаты x и y:

qplot(x, y, data=as.data.frame(curve(eq)), geom="line")
3 голосов
/ 03 августа 2012

Учитывая, что заголовок вашего вопроса - «построение функций в R», вот как использовать curve для добавления функции в базовый график R.

Создать данные, как раньше

eq = function(x){x*x}; x = (1:50); y = eq(x)

Затем используйте plot из базовой графики, чтобы построить точки, а затем curve с аргументом add=TRUE, чтобы добавить кривую.

plot(x, y,  xlab = "X-axis", ylab = "Y-axis") 
curve(eq, add=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...