Plot fonctions au-dessus des points de données dans R
-
13-09-2019 - |
Question
Est-il possible de superposer une fonction mathématique sur des données en utilisant 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 #?
Dans ce cas, mes données est générée à l'aide de la fonction, mais je veux comprendre comment utiliser curve()
avec ggplot.
La solution
Vous voulez probablement 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)
et si vous voulez vraiment utiliser curve()
, à savoir les coordonnées calculées x et y:
qplot(x, y, data=as.data.frame(curve(eq)), geom="line")
Autres conseils
Étant donné que le titre de votre question est « complote fonctions R », voici comment utiliser curve
pour ajouter une fonction à une parcelle de base R.
Créer des données comme avant
eq = function(x){x*x}; x = (1:50); y = eq(x)
Utilisez ensuite plot
de graphiques de base pour tracer les points, suivi de curve
avec l'argument add=TRUE
, pour ajouter la courbe.
plot(x, y, xlab = "X-axis", ylab = "Y-axis")
curve(eq, add=TRUE)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow