web-dev-qa-db-fra.com

Équivalent de la courbe () pour ggplot

Existe-t-il une méthode équivalente pour tracer des fonctions en utilisant ggplot à la commande curve() utilisée dans les graphiques de base? Je suppose que l'alternative serait de simplement créer un vecteur de valeurs de la fonction et de tracer une ligne connectée, mais j'espérais quelque chose d'un peu plus simple.

Merci!

64
Charlie

Vous pouvez ajouter une courbe en utilisant le stat_function:

ggplot(data.frame(x=c(0, 10)), aes(x)) + stat_function(fun=sin)

Il est également possible d'utiliser qplot, mais ce n'est pas clair si c'est plus simple:

qplot(c(0,2), fun=sin, stat="function", geom="line")

Si votre fonction de courbe est plus compliquée, utilisez une fonction lambda. Par exemple,

ggplot(data.frame(x=c(0, 10)), aes(x)) + 
  stat_function(fun=function(x) sin(x) + log(x))

vous pouvez trouver d'autres exemples sur http://kohske.wordpress.com/2010/12/25/draw-function-without-data-in-ggplot2/

73
kohske

Le data.frame l'exemple ci-dessus fonctionne bien et crée des lignes de quadrillage. L'exemple qplot ne fonctionne pas dans ggplot2 2.2.0 pour les raisons indiquées.

Vous pouvez également utiliser la fonction "courbe" dans ggplot2 2.2.0, mais elle ne crée pas automatiquement de lignes de quadrillage ou de couleur d'arrière-plan. Par exemple:

curve(cos(x), from= 0, to= pi/2).  

La méthode "ggplot (data.frame (...)) donne la gamme impressionnante complète des options de formatage de ggplot2. J'aime ça.

2