web-dev-qa-db-fra.com

Comment tracer une courbe de fonction dans R

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

eq = function(x){x*x}

dans R?

Cela semble une question si évidente, mais je ne trouvais que ces questions connexes sur stackoverflow, mais elles sont toutes plus spécifiques.

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

58
sjdh

Tu veux dire comme cela?

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

Plot of eq over range 1:1000

(Ou quelle que soit la plage de valeurs pertinente pour votre fonction)

24
Eric

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

Le moyen le plus simple consiste à utiliser une 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

68
sjdh

plot a une méthode plot.function

plot(eq, 1, 1000)

Ou

curve(eq, 1, 1000)
28
GSee

Voici une version en treillis:

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

Lattice output

1
John Paul

Solution réseau avec les paramètres 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 que votre plage de valeurs pour x soit tracée 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 rgb:

col = rgb (rouge = 255, vert = 90, bleu = 0, maxColorValue = 255)

  1. Vous pouvez modifier la largeur de la ligne tracée en définissant:

lwd = 2

  1. Vous pouvez changer la taille des étiquettes en les redimensionnant:

cex.lab = 3.5, cex.axis = 3.5

Example plot

1
mrk