2010-12-14 10 views
4

Je veux comparer deux courbes, il est possible avec R de tracer un tracé puis d'en dessiner un autre? Comment ?dessine une ou plusieurs parcelles dans la même fenêtre

merci.

+1

Si vous voulez plus d'exemples, vous devriez jeter un oeil à la bibliothèque graphique R (http://addictedtor.free.fr/graphiques/) est une bonne source de l'inspiration comme le code et les résultats sont là. –

Répondre

1

Jetez un oeil à la valeur nominale

Avec base R
> ?par 
> plot(rnorm(100)) 
> par(new=T) 
> plot(rnorm(100), col="red") 
5

, vous pouvez tracer votre courbe une, puis ajoutez la deuxième courbe avec l'argument lines(). Voici un exemple rapide:

x <- 1:10 
y <- x^2 
y2 <- x^3 

plot(x,y, type = "l") 
lines(x, y2, col = "red") 

Sinon, si vous vouliez utiliser ggplot2, voici deux méthodes - on trace différentes couleurs sur la même parcelle, et l'autre génère des parcelles séparées pour chaque variable. L'astuce ici est de "fondre" les données en format long en premier. Dessinez plusieurs courbes en même temps avec la fonction matplot.

library(ggplot2) 

df <- data.frame(x, y, y2) 

df.m <- melt(df, id.var = "x") 

qplot(x, value, data = df.m, colour = variable, geom = "line") 

qplot(x, value, data = df.m, geom = "line")+ facet_wrap(~ variable) 
0

Dessinez plusieurs courbes en même temps avec la fonction matplot. Aidez-nous (matplot) pour plus.

4

En utilisant lattice package:

require(lattice) 
x <- seq(-3,3,length.out=101) 
xyplot(dnorm(x) + sin(x) + cos(x) ~ x, type = "l") 

Lattice curve plot

+0

+1 pour utiliser le réseau –

2

Il y a eu des solutions déjà pour vous. Si vous restez avec le paquet de base, vous devriez faire connaissance avec les fonctions plot(), lines(), abline(), points(), polygon(), segments(), rect(), box(), arrows(), ... Jetez un oeil à leurs fichiers d'aide.

Vous devriez voir une parcelle à partir du package de base en tant que volet avec les coordonnées vous lui avez donné. Sur ce volet, vous pouvez dessiner un ensemble d'objets avec les fonctions mentionnées ci-dessus. Ils vous permettent de construire un graphique comme vous le souhaitez. Vous devriez vous rappeler cependant que, sauf si vous jouez avec les paramètres de par, comme le Dr G l'a montré, chaque appel à plot() vous donne un nouveau volet. Veuillez également prendre en compte que les choses peuvent être complot sur d'autres choses, alors pensez à l'ordre que vous utilisez pour tracer les choses.

Voir par exemple:

set.seed(100) 
x <- 1:10 
y <- x^2 
y2 <- x^3 
yse <- abs(runif(10,2,4)) 

plot(x,y, type = "n") # type="n" only plots the pane, no curves or points. 

# plots the area between both curves 
polygon(c(x,sort(x,decreasing=T)),c(y,sort(y2,decreasing=T)),col="grey") 
# plot both curves 
lines(x,y,col="purple") 
lines(x, y2, col = "red") 
# add the points to the first curve 
points(x, y, col = "black") 
# adds some lines indicating the standard error 
segments(x,y,x,y+yse,col="blue") 
# adds some flags indicating the standard error 
arrows(x,y,x,y-yse,angle=90,length=0.1,col="darkgreen") 

Cela vous donne:

alt text

1

ggplot2 est un grand paquet pour ce genre de chose:

install.packages('ggplot2') 
require(ggplot2) 
x <- 1:10 
y1 <- x^2 
y2 <- x^3 
df <- data.frame(x = x, curve1 = y1, curve2 = y2) 
df.m <- melt(df, id.vars = 'x', variable_name = 'curve') 
# now df.m is a data frame with columns 'x', 'curve', 'value' 
ggplot(df.m, aes(x,value)) + geom_line(aes(colour = curve)) + 
geom_point(aes(shape=curve)) 

Vous obtenez le tracé coloré par courbe, et avec différentes marques piont pour chaque courbe, et une belle légende, tous sans travail sans douleur supplémentaire:

alt text

+0

votre code ne fonctionne pas sous sa forme actuelle. Il vous manque un parent après l'appel initial à 'ggplot' et référençons le mauvais objet. Voici une version de travail: ' ggplot (df.m, aes (x, valeur)) + geom_line (aes (couleur = courbe)) + geom_point (aes (forme = courbe)) ' – Chase

+0

Merci Chase, et des excuses pour la négligence. –

Questions connexes