Comment tracer une courbe de fonction en R

quelles sont les alternatives pour dessiner une courbe simple pour une fonction comme

eq = function(x){x*x}

en R?

cela semble une question si évidente, mais je n'ai pu trouver ces questions connexes sur stackoverflow, mais ils sont tous plus spécifiques

  • fonction de ligne de tracé dans R
  • fonctions de pointage en haut des points de données dans R
  • comment tracer une fonction dans R avec des nombres complexes?
  • comment tracer une fonction linéaire simple à la pièce?
  • dessiner plus d'une fonction courbes dans le même graphe

j'espère que je n'ai pas écrit une question en double.

47
demandé sur Community 2014-09-29 05:20:04

5 réponses

comme ça?

> eq = function(x){x*x}
> plot(eq(1:1000), type='l')

Plot of eq over range 1:1000

(ou n'importe quelle plage de valeurs est pertinente à votre fonction)

10
répondu Eric 2014-09-29 01:24:45

j'ai fait quelques recherches sur le web, et voici quelques façons que j'ai trouvées:

la façon la plus simple est d'utiliser la courbe sans fonction prédéfinie

curve(x^2, from=1, to=50, , xlab="x", ylab="y")

enter image description here

vous pouvez également utiliser la courbe lorsque vous avez une fonction prédéfinie

eq = function(x){x*x}
curve(eq, from=1, to=50, xlab="x", ylab="y")

enter image description here

si vous voulez utiliser ggplot, vous avez le choix entre qplot

library("ggplot2")
eq = function(x){x*x}
qplot(c(1,50), fun=eq, stat="function", geom="line", xlab="x", ylab="y")

enter image description here

et ggplot

library("ggplot2")
eq = function(x){x*x}
ggplot(data.frame(x=c(1, 50)), aes(x=x)) + stat_function(fun=eq, geom="line") + xlab("x") + ylab("y")

enter image description here

50
répondu sjdh 2014-09-29 01:29:12

plot a un plot.function méthode

plot(eq, 1, 1000)

ou

curve(eq, 1, 1000)
23
répondu GSee 2014-09-29 01:29:04

Voici une version en treillis:

library(lattice)
eq<-function(x) {x*x}
X<-1:1000
xyplot(eq(X)~X,type="l")

Lattice output

1
répondu John Paul 2014-09-29 13:00:55

solution de réseau avec des réglages supplémentaires dont j'avais besoin:

library(lattice)
distribution<-function(x) {2^(-x*2)}
X<-seq(0,10,0.00001)
xyplot(distribution(X)~X,type="l", col = rgb(red = 255, green = 90, blue = 0, maxColorValue = 255), cex.lab = 3.5, cex.axis = 3.5, lwd=2 )
  1. si vous avez besoin de votre gamme de valeurs pour x tracées par incréments différents de 1, par exemple 0.00001 vous pouvez utiliser:

X < - seq(0,10,0.00001)

  1. Vous pouvez changer la couleur de votre ligne en définissant une valeur rvb:

col = rgb (rouge = 255, Vert = 90, Bleu = 0, maxColorValue = 255)

  1. vous pouvez modifier la largeur de la ligne tracée en paramétrant:

lwd = 2

  1. vous pouvez changer la taille des étiquettes en les mettant à l'échelle:

cex.laboratoire = 3.5, cex.axe = 3,5

Example plot

1
répondu mk18 2017-04-05 09:14:19